diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36814dd2..226f92e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -202,7 +202,7 @@ jobs: test-path: 'ai-engine/tests/integration/test_basic_integration.py' container-name: 'integration-test' - test-suite: backend - test-path: 'backend/tests/integration/' + test-path: 'backend/src/tests/integration/' container-name: 'backend-test' - test-suite: ai-engine test-path: 'ai-engine/tests/integration/test_imports.py' @@ -553,10 +553,10 @@ jobs: cd backend echo "Current directory: $(pwd)" echo "Test files available:" - find tests -name "*.py" | head -5 || echo "No backend test files found" + find src/tests -name "*.py" | head -5 || echo "No backend test files found" echo "Running backend integration tests..." - timeout 1200s python -m pytest tests/integration/ tests/test_health.py -v --tb=short --junitxml=pytest-results-${{ matrix.test-suite }}.xml -s --no-header + timeout 1200s python -m pytest src/tests/integration/ src/tests/test_health.py -v --tb=short --junitxml=pytest-results-${{ matrix.test-suite }}.xml -s --no-header ;; "ai-engine") echo "Running ai-engine tests..." diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 13113256..42a07a7a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -142,7 +142,7 @@ jobs: CI: true run: | cd backend - python -m pytest tests/ -v --cov=src --cov-report=xml --timeout=120 --ignore=tests/unit/test_addon_assets_crud.py --ignore=tests/unit/test_behavior_files_crud.py --ignore=tests/unit/test_conversion_assets_crud.py --ignore=tests/unit/test_cache_service.py --ignore=tests/unit/test_comparison_api.py --ignore=tests/unit/test_main_unit.py --ignore=tests/unit/test_performance_api.py --ignore=tests/unit/test_validation.py --ignore=tests/unit/test_validation_api.py --ignore=tests/integration/test_api_v1_integration.py --ignore=tests/integration/test_end_to_end_integration.py --ignore=tests/integration/test_performance_integration.py --ignore=tests/integration/test_validation_api_integration.py + python -m pytest src/tests/ -v --cov=src --cov-report=xml --timeout=120 --ignore=src/tests/unit/test_addon_assets_crud.py --ignore=src/tests/unit/test_behavior_files_crud.py --ignore=src/tests/unit/test_conversion_assets_crud.py --ignore=src/tests/unit/test_cache_service.py --ignore=src/tests/unit/test_comparison_api.py --ignore=src/tests/unit/test_main_unit.py --ignore=src/tests/unit/test_performance_api.py --ignore=src/tests/unit/test_validation.py --ignore=src/tests/unit/test_validation_api.py --ignore=src/tests/integration/test_api_v1_integration.py --ignore=src/tests/integration/test_end_to_end_integration.py --ignore=src/tests/integration/test_performance_integration.py --ignore=src/tests/integration/test_validation_api_integration.py - name: Run AI engine tests env: diff --git a/backend/coverage.json b/backend/coverage.json new file mode 100644 index 00000000..94a5d7e4 --- /dev/null +++ b/backend/coverage.json @@ -0,0 +1 @@ +{"meta": {"format": 3, "version": "7.13.5", "timestamp": "2026-04-05T23:41:20.760214", "branch_coverage": false, "show_contexts": false}, "files": {"src/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/api/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/api/advanced_events.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 33, 34, 35, 36, 37, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 60, 63, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 117, 120, 121, 122, 123, 124, 125, 126, 127, 130, 133, 134, 135, 138, 141, 142, 143, 144, 145, 146, 150, 250, 253, 257, 273, 276, 280, 292, 295, 299, 315, 320, 324, 341, 347, 355, 356, 357, 358, 361, 362, 363, 366, 380, 381, 389, 398, 403, 413, 419, 424, 432, 434, 437, 438, 439, 441, 442, 444, 461, 466, 474, 476, 478, 485, 489, 492, 504, 505, 511, 513], "summary": {"covered_lines": 147, "num_statements": 161, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [391, 392, 393, 456, 457, 458, 480, 481, 482, 500, 501, 529, 530, 531], "excluded_lines": [], "functions": {"get_event_types": {"executed_lines": [257], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 253}, "get_trigger_types": {"executed_lines": [280], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "get_action_types": {"executed_lines": [299], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "get_event_templates": {"executed_lines": [324], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320}, "create_event_system": {"executed_lines": [355, 356, 357, 358, 361, 362, 363, 366, 380, 381, 389], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [391, 392, 393], "excluded_lines": [], "start_line": 347}, "get_event_system": {"executed_lines": [413], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403}, "test_event_system": {"executed_lines": [432, 434, 437, 438, 439, 441, 442, 444], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [456, 457, 458], "excluded_lines": [], "start_line": 424}, "generate_event_system_functions": {"executed_lines": [474, 476, 478], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [480, 481, 482], "excluded_lines": [], "start_line": 466}, "generate_event_functions_background": {"executed_lines": [489, 492], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [500, 501], "excluded_lines": [], "start_line": 485}, "get_event_system_debug": {"executed_lines": [511, 513], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [529, 530, 531], "excluded_lines": [], "start_line": 505}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 33, 34, 35, 36, 37, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 60, 63, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 117, 120, 121, 122, 123, 124, 125, 126, 127, 130, 133, 134, 135, 138, 141, 142, 143, 144, 145, 146, 150, 250, 253, 273, 276, 292, 295, 315, 320, 341, 347, 398, 403, 419, 424, 461, 466, 485, 504, 505], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EventType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "EventTriggerType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "EventActionType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "EventCondition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "EventTrigger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "EventAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "EventSystemConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "AdvancedEventSystem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "AdvancedEventSystemCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "AdvancedEventSystemUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "EventSystemTest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "EventSystemTestResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 33, 34, 35, 36, 37, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 60, 63, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 117, 120, 121, 122, 123, 124, 125, 126, 127, 130, 133, 134, 135, 138, 141, 142, 143, 144, 145, 146, 150, 250, 253, 257, 273, 276, 280, 292, 295, 299, 315, 320, 324, 341, 347, 355, 356, 357, 358, 361, 362, 363, 366, 380, 381, 389, 398, 403, 413, 419, 424, 432, 434, 437, 438, 439, 441, 442, 444, 461, 466, 474, 476, 478, 485, 489, 492, 504, 505, 511, 513], "summary": {"covered_lines": 147, "num_statements": 161, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [391, 392, 393, 456, 457, 458, 480, 481, 482, 500, 501, 529, 530, 531], "excluded_lines": [], "start_line": 1}}}, "src/api/analytics.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 25, 26, 27, 28, 29, 30, 32, 57, 60, 61, 62, 63, 64, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 93, 94, 155, 156, 231, 232, 295, 296, 334, 335, 395, 396], "summary": {"covered_lines": 55, "num_statements": 142, "percent_covered": 38.732394366197184, "percent_covered_display": "39", "missing_lines": 87, "excluded_lines": 0, "percent_statements_covered": 38.732394366197184, "percent_statements_covered_display": "39"}, "missing_lines": [105, 108, 109, 110, 113, 114, 115, 116, 117, 118, 121, 123, 124, 136, 147, 148, 150, 152, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 189, 190, 191, 192, 193, 195, 197, 198, 210, 224, 225, 226, 228, 245, 246, 251, 253, 255, 256, 259, 268, 275, 280, 287, 288, 289, 291, 308, 309, 310, 311, 313, 315, 316, 325, 327, 328, 329, 331, 351, 359, 360, 366, 367, 368, 369, 371, 373, 375, 376, 386, 388, 389, 390, 392, 403], "excluded_lines": [], "functions": {"track_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [105, 108, 109, 110, 113, 114, 115, 116, 117, 118, 121, 123, 124, 136, 147, 148, 150, 152], "excluded_lines": [], "start_line": 94}, "get_events": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 189, 190, 191, 192, 193, 195, 197, 198, 210, 224, 225, 226, 228], "excluded_lines": [], "start_line": 156}, "get_analytics_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [245, 246, 251, 253, 255, 256, 259, 268, 275, 280, 287, 288, 289, 291], "excluded_lines": [], "start_line": 232}, "track_page_view": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [308, 309, 310, 311, 313, 315, 316, 325, 327, 328, 329, 331], "excluded_lines": [], "start_line": 296}, "track_conversion_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [351, 359, 360, 366, 367, 368, 369, 371, 373, 375, 376, 386, 388, 389, 390, 392], "excluded_lines": [], "start_line": 335}, "get_event_types": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [403], "excluded_lines": [], "start_line": 396}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 25, 26, 27, 28, 29, 30, 32, 57, 60, 61, 62, 63, 64, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 93, 94, 155, 156, 231, 232, 295, 296, 334, 335, 395, 396], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AnalyticsEventRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "AnalyticsEventResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "AnalyticsQueryRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "AnalyticsStatsResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 25, 26, 27, 28, 29, 30, 32, 57, 60, 61, 62, 63, 64, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 93, 94, 155, 156, 231, 232, 295, 296, 334, 335, 395, 396], "summary": {"covered_lines": 55, "num_statements": 142, "percent_covered": 38.732394366197184, "percent_covered_display": "39", "missing_lines": 87, "excluded_lines": 0, "percent_statements_covered": 38.732394366197184, "percent_statements_covered_display": "39"}, "missing_lines": [105, 108, 109, 110, 113, 114, 115, 116, 117, 118, 121, 123, 124, 136, 147, 148, 150, 152, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 188, 189, 190, 191, 192, 193, 195, 197, 198, 210, 224, 225, 226, 228, 245, 246, 251, 253, 255, 256, 259, 268, 275, 280, 287, 288, 289, 291, 308, 309, 310, 311, 313, 315, 316, 325, 327, 328, 329, 331, 351, 359, 360, 366, 367, 368, 369, 371, 373, 375, 376, 386, 388, 389, 390, 392, 403], "excluded_lines": [], "start_line": 1}}}, "src/api/assets.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 47, 57, 58, 59, 60, 63, 65, 82, 85, 102, 103, 111, 117, 118, 197, 198, 206, 207, 208, 210, 213, 214, 227, 235, 238, 241, 242, 253, 255, 258, 261, 262, 271, 272, 276, 277, 281, 282, 283, 284, 288, 295, 299, 300, 313, 314, 317, 321, 323, 325, 327, 328, 329, 341, 342, 354, 356, 358], "summary": {"covered_lines": 89, "num_statements": 152, "percent_covered": 58.55263157894737, "percent_covered_display": "59", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 58.55263157894737, "percent_statements_covered_display": "59"}, "missing_lines": [112, 113, 114, 131, 132, 135, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 156, 157, 158, 159, 160, 161, 162, 163, 165, 168, 169, 178, 179, 181, 182, 183, 184, 187, 189, 190, 191, 192, 236, 256, 273, 278, 285, 286, 289, 290, 291, 292, 293, 315, 319, 331, 332, 333, 335, 336, 337, 367, 368, 369], "excluded_lines": [], "functions": {"_asset_to_response": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "list_conversion_assets": {"executed_lines": [102, 103, 111], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [112, 113, 114], "excluded_lines": [], "start_line": 85}, "upload_asset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [131, 132, 135, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 156, 157, 158, 159, 160, 161, 162, 163, 165, 168, 169, 178, 179, 181, 182, 183, 184, 187, 189, 190, 191, 192], "excluded_lines": [], "start_line": 118}, "get_asset": {"executed_lines": [206, 207, 208, 210], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "update_asset_status": {"executed_lines": [227, 235, 238], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [236], "excluded_lines": [], "start_line": 214}, "update_asset_metadata": {"executed_lines": [253, 255, 258], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [256], "excluded_lines": [], "start_line": 242}, "delete_asset": {"executed_lines": [271, 272, 276, 277, 281, 282, 283, 284, 288, 295], "summary": {"covered_lines": 10, "num_statements": 19, "percent_covered": 52.63157894736842, "percent_covered_display": "53", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 52.63157894736842, "percent_statements_covered_display": "53"}, "missing_lines": [273, 278, 285, 286, 289, 290, 291, 292, 293], "excluded_lines": [], "start_line": 262}, "trigger_asset_conversion": {"executed_lines": [313, 314, 317, 321, 323, 325, 327, 328, 329], "summary": {"covered_lines": 9, "num_statements": 17, "percent_covered": 52.94117647058823, "percent_covered_display": "53", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 52.94117647058823, "percent_statements_covered_display": "53"}, "missing_lines": [315, 319, 331, 332, 333, 335, 336, 337], "excluded_lines": [], "start_line": 300}, "convert_all_conversion_assets": {"executed_lines": [354, 356, 358], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [367, 368, 369], "excluded_lines": [], "start_line": 342}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 47, 57, 58, 59, 60, 63, 82, 85, 117, 118, 197, 198, 213, 214, 241, 242, 261, 262, 299, 300, 341, 342], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AssetResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "AssetUploadRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "AssetStatusUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 47, 57, 58, 59, 60, 63, 65, 82, 85, 102, 103, 111, 117, 118, 197, 198, 206, 207, 208, 210, 213, 214, 227, 235, 238, 241, 242, 253, 255, 258, 261, 262, 271, 272, 276, 277, 281, 282, 283, 284, 288, 295, 299, 300, 313, 314, 317, 321, 323, 325, 327, 328, 329, 341, 342, 354, 356, 358], "summary": {"covered_lines": 89, "num_statements": 152, "percent_covered": 58.55263157894737, "percent_covered_display": "59", "missing_lines": 63, "excluded_lines": 0, "percent_statements_covered": 58.55263157894737, "percent_statements_covered_display": "59"}, "missing_lines": [112, 113, 114, 131, 132, 135, 138, 139, 140, 141, 144, 145, 146, 147, 148, 149, 150, 151, 152, 156, 157, 158, 159, 160, 161, 162, 163, 165, 168, 169, 178, 179, 181, 182, 183, 184, 187, 189, 190, 191, 192, 236, 256, 273, 278, 285, 286, 289, 290, 291, 292, 293, 315, 319, 331, 332, 333, 335, 336, 337, 367, 368, 369], "excluded_lines": [], "start_line": 1}}}, "src/api/auth.py": {"executed_lines": [14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 37, 39, 42, 50, 53, 54, 56, 57, 58, 60, 62, 64, 66, 68, 71, 74, 75, 78, 81, 82, 85, 88, 89, 90, 93, 96, 99, 102, 103, 106, 109, 112, 115, 117, 118, 119, 121, 123, 125, 127, 129, 132, 135, 143, 181, 182, 189, 190, 192, 193, 198, 199, 207, 208, 209, 211, 212, 216, 222, 223, 230, 231, 233, 234, 239, 240, 245, 246, 251, 252, 254, 260, 261, 267, 270, 271, 278, 280, 281, 286, 287, 289, 295, 297, 302, 303, 310, 316, 318, 319, 324, 325, 326, 328, 330, 333, 334, 341, 342, 344, 345, 346, 347, 348, 350, 351, 353, 358, 359, 367, 373, 375, 376, 381, 382, 383, 385, 387, 395, 396, 402, 411, 412, 420, 421, 427, 432, 434, 435, 437, 444, 445, 452, 453, 455, 463, 464, 497, 498, 523, 524], "summary": {"covered_lines": 151, "num_statements": 188, "percent_covered": 80.31914893617021, "percent_covered_display": "80", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 80.31914893617021, "percent_statements_covered_display": "80"}, "missing_lines": [61, 63, 65, 67, 122, 124, 126, 128, 153, 154, 156, 157, 163, 164, 166, 167, 173, 290, 428, 472, 474, 475, 477, 484, 485, 486, 488, 505, 508, 510, 532, 538, 540, 541, 546, 547, 549], "excluded_lines": [], "functions": {"RegisterRequest.validate_password": {"executed_lines": [60, 62, 64, 66, 68], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [61, 63, 65, 67], "excluded_lines": [], "start_line": 58}, "PasswordResetConfirmRequest.validate_password": {"executed_lines": [121, 123, 125, 127, 129], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [122, 124, 126, 128], "excluded_lines": [], "start_line": 119}, "get_current_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [153, 154, 156, 157, 163, 164, 166, 167, 173], "excluded_lines": [], "start_line": 143}, "register": {"executed_lines": [189, 190, 192, 193, 198, 199, 207, 208, 209, 211, 212, 216], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "login": {"executed_lines": [230, 231, 233, 234, 239, 240, 245, 246, 251, 252, 254], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223}, "logout": {"executed_lines": [267], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "refresh_token_endpoint": {"executed_lines": [278, 280, 281, 286, 287, 289, 295, 297], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [290], "excluded_lines": [], "start_line": 271}, "verify_email": {"executed_lines": [310, 316, 318, 319, 324, 325, 326, 328, 330], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "forgot_password": {"executed_lines": [341, 342, 344, 345, 346, 347, 348, 350, 351, 353], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "reset_password": {"executed_lines": [367, 373, 375, 376, 381, 382, 383, 385, 387], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 359}, "get_current_user_profile": {"executed_lines": [402], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396}, "update_current_user_profile": {"executed_lines": [420, 421, 427, 432, 434, 435, 437], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [428], "excluded_lines": [], "start_line": 412}, "delete_current_user_account": {"executed_lines": [452, 453, 455], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 445}, "create_api_key_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [472, 474, 475, 477, 484, 485, 486, 488], "excluded_lines": [], "start_line": 464}, "list_api_keys": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [505, 508, 510], "excluded_lines": [], "start_line": 498}, "revoke_api_key": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [532, 538, 540, 541, 546, 547, 549], "excluded_lines": [], "start_line": 524}, "": {"executed_lines": [14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 37, 39, 42, 50, 53, 54, 56, 57, 58, 71, 74, 75, 78, 81, 82, 85, 88, 89, 90, 93, 96, 99, 102, 103, 106, 109, 112, 115, 117, 118, 119, 132, 135, 143, 181, 182, 222, 223, 260, 261, 270, 271, 302, 303, 333, 334, 358, 359, 395, 396, 411, 412, 444, 445, 463, 464, 497, 498, 523, 524], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RegisterRequest": {"executed_lines": [60, 62, 64, 66, 68], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [61, 63, 65, 67], "excluded_lines": [], "start_line": 50}, "RegisterResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "LoginRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "LoginResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TokenRefreshRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TokenResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "PasswordResetRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "PasswordResetConfirmRequest": {"executed_lines": [121, 123, 125, 127, 129], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [122, 124, 126, 128], "excluded_lines": [], "start_line": 112}, "MessageResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "": {"executed_lines": [14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 37, 39, 42, 50, 53, 54, 56, 57, 58, 71, 74, 75, 78, 81, 82, 85, 88, 89, 90, 93, 96, 99, 102, 103, 106, 109, 112, 115, 117, 118, 119, 132, 135, 143, 181, 182, 189, 190, 192, 193, 198, 199, 207, 208, 209, 211, 212, 216, 222, 223, 230, 231, 233, 234, 239, 240, 245, 246, 251, 252, 254, 260, 261, 267, 270, 271, 278, 280, 281, 286, 287, 289, 295, 297, 302, 303, 310, 316, 318, 319, 324, 325, 326, 328, 330, 333, 334, 341, 342, 344, 345, 346, 347, 348, 350, 351, 353, 358, 359, 367, 373, 375, 376, 381, 382, 383, 385, 387, 395, 396, 402, 411, 412, 420, 421, 427, 432, 434, 435, 437, 444, 445, 452, 453, 455, 463, 464, 497, 498, 523, 524], "summary": {"covered_lines": 141, "num_statements": 170, "percent_covered": 82.94117647058823, "percent_covered_display": "83", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 82.94117647058823, "percent_statements_covered_display": "83"}, "missing_lines": [153, 154, 156, 157, 163, 164, 166, 167, 173, 290, 428, 472, 474, 475, 477, 484, 485, 486, 488, 505, 508, 510, 532, 538, 540, 541, 546, 547, 549], "excluded_lines": [], "start_line": 1}}}, "src/api/automation_metrics.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 158, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 158, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 16, 23, 25, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 52, 78, 81, 82, 83, 86, 89, 90, 91, 92, 95, 98, 99, 100, 101, 102, 105, 108, 109, 110, 113, 116, 117, 118, 121, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 139, 142, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 166, 167, 168, 169, 170, 171, 172, 173, 176, 179, 180, 181, 182, 185, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 202, 203, 204, 205, 213, 214, 223, 224, 225, 227, 245, 246, 247, 250, 251, 260, 261, 262, 264, 316, 317, 318, 321, 322, 331, 332, 335, 336, 338, 351, 356, 357, 358, 361, 362, 371, 372, 373, 375, 393, 394, 395, 398, 399, 410, 411, 412, 419, 438, 439, 440, 443, 444, 451, 452, 453, 455, 459, 460, 461], "excluded_lines": [], "functions": {"get_automation_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [223, 224, 225, 227, 245, 246, 247], "excluded_lines": [], "start_line": 214}, "get_automation_dashboard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [260, 261, 262, 264, 316, 317, 318], "excluded_lines": [], "start_line": 251}, "record_conversion_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [331, 332, 335, 336, 338, 351, 356, 357, 358], "excluded_lines": [], "start_line": 322}, "get_automation_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [371, 372, 373, 375, 393, 394, 395], "excluded_lines": [], "start_line": 362}, "get_conversion_events": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [410, 411, 412, 419, 438, 439, 440], "excluded_lines": [], "start_line": 399}, "reset_automation_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [451, 452, 453, 455, 459, 460, 461], "excluded_lines": [], "start_line": 444}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 114, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 114, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 16, 23, 25, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 52, 78, 81, 82, 83, 86, 89, 90, 91, 92, 95, 98, 99, 100, 101, 102, 105, 108, 109, 110, 113, 116, 117, 118, 121, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 139, 142, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 166, 167, 168, 169, 170, 171, 172, 173, 176, 179, 180, 181, 182, 185, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 202, 203, 204, 205, 213, 214, 250, 251, 321, 322, 361, 362, 398, 399, 443, 444], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionEventRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ConversionEventResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "MetricValue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "MetricsSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "MetricsStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "MetricsPeriod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "MetricData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "DashboardData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "AutomationMetricsResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "HistoricalDataPoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "HistoricalDataResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "HistoryEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185}, "HistoryEventsResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 158, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 158, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 16, 23, 25, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 52, 78, 81, 82, 83, 86, 89, 90, 91, 92, 95, 98, 99, 100, 101, 102, 105, 108, 109, 110, 113, 116, 117, 118, 121, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 139, 142, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 163, 166, 167, 168, 169, 170, 171, 172, 173, 176, 179, 180, 181, 182, 185, 188, 189, 190, 191, 192, 193, 194, 195, 196, 199, 202, 203, 204, 205, 213, 214, 223, 224, 225, 227, 245, 246, 247, 250, 251, 260, 261, 262, 264, 316, 317, 318, 321, 322, 331, 332, 335, 336, 338, 351, 356, 357, 358, 361, 362, 371, 372, 373, 375, 393, 394, 395, 398, 399, 410, 411, 412, 419, 438, 439, 440, 443, 444, 451, 452, 453, 455, 459, 460, 461], "excluded_lines": [], "start_line": 1}}}, "src/api/batch_conversion.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 26, 27, 28, 31, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 53, 56, 57, 58, 59, 62, 63, 132, 142, 146, 149, 151, 154, 155, 207, 208, 280, 281, 301, 302], "summary": {"covered_lines": 49, "num_statements": 104, "percent_covered": 47.11538461538461, "percent_covered_display": "47", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 47.11538461538461, "percent_statements_covered_display": "47"}, "missing_lines": [78, 79, 81, 82, 89, 90, 96, 99, 100, 101, 107, 108, 110, 113, 121, 123, 166, 172, 174, 175, 181, 182, 183, 185, 186, 188, 219, 225, 227, 228, 234, 235, 236, 238, 239, 240, 241, 250, 251, 263, 264, 265, 267, 294, 313, 319, 321, 322, 328, 329, 330, 331, 332, 334, 336], "excluded_lines": [], "functions": {"start_batch_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [78, 79, 81, 82, 89, 90, 96, 99, 100, 101, 107, 108, 110, 113, 121, 123], "excluded_lines": [], "start_line": 63}, "process_batch_conversion": {"executed_lines": [142, 146, 149, 151], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "get_batch_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [166, 172, 174, 175, 181, 182, 183, 185, 186, 188], "excluded_lines": [], "start_line": 155}, "get_batch_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [219, 225, 227, 228, 234, 235, 236, 238, 239, 240, 241, 250, 251, 263, 264, 265, 267], "excluded_lines": [], "start_line": 208}, "download_all_batch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [294], "excluded_lines": [], "start_line": 281}, "cancel_batch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [313, 319, 321, 322, 328, 329, 330, 331, 332, 334, 336], "excluded_lines": [], "start_line": 302}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 26, 27, 28, 31, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 53, 56, 57, 58, 59, 62, 63, 132, 154, 155, 207, 208, 280, 281, 301, 302], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BatchConversionRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "BatchConversionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "BatchStatusResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "BatchResultResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 23, 26, 27, 28, 31, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 53, 56, 57, 58, 59, 62, 63, 132, 142, 146, 149, 151, 154, 155, 207, 208, 280, 281, 301, 302], "summary": {"covered_lines": 49, "num_statements": 104, "percent_covered": 47.11538461538461, "percent_covered_display": "47", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 47.11538461538461, "percent_statements_covered_display": "47"}, "missing_lines": [78, 79, 81, 82, 89, 90, 96, 99, 100, 101, 107, 108, 110, 113, 121, 123, 166, 172, 174, 175, 181, 182, 183, 185, 186, 188, 219, 225, 227, 228, 234, 235, 236, 238, 239, 240, 241, 250, 251, 263, 264, 265, 267, 294, 313, 319, 321, 322, 328, 329, 330, 331, 332, 334, 336], "excluded_lines": [], "start_line": 1}}}, "src/api/behavior_export.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 24, 25, 28, 29, 32, 35, 36, 37, 38, 39, 40, 43, 44, 55, 56, 57, 58, 61, 62, 63, 66, 68, 69, 72, 73, 76, 77, 79, 93, 115, 116, 117, 120, 121, 122, 123, 124, 125, 129, 132, 134, 143, 145, 147, 148, 150, 153, 154, 155, 157, 160, 163, 166, 167, 171, 172, 175, 176, 178, 190, 192, 195, 200, 201, 204, 205, 209, 210, 214, 215, 218, 219, 221, 238, 241, 249, 250, 255, 256, 260, 261, 263, 264, 281, 284, 288, 310, 311, 318, 319, 320, 321, 324, 325, 329, 331, 335, 341, 343, 344, 347, 348, 349, 359, 363], "summary": {"covered_lines": 122, "num_statements": 144, "percent_covered": 84.72222222222223, "percent_covered_display": "85", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 84.72222222222223, "percent_statements_covered_display": "85"}, "missing_lines": [126, 127, 158, 230, 231, 233, 251, 252, 257, 267, 268, 269, 271, 272, 274, 326, 332, 350, 351, 352, 355, 356], "excluded_lines": [], "functions": {"export_behavior_pack": {"executed_lines": [55, 56, 57, 58, 61, 62, 63, 66, 68, 69, 72, 73, 76, 77, 79, 93, 115, 116, 117, 120, 121, 122, 123, 124, 125, 129, 132, 134, 143, 145, 147, 148, 150, 153, 154, 155, 157, 160, 163, 166, 167, 171, 172, 175, 176, 178, 190, 192, 195, 200, 201, 204, 205, 209, 210, 214, 215, 218, 219, 221], "summary": {"covered_lines": 60, "num_statements": 66, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [126, 127, 158, 230, 231, 233], "excluded_lines": [], "start_line": 44}, "download_exported_pack": {"executed_lines": [249, 250, 255, 256, 260, 261, 263, 264], "summary": {"covered_lines": 8, "num_statements": 17, "percent_covered": 47.05882352941177, "percent_covered_display": "47", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 47.05882352941177, "percent_statements_covered_display": "47"}, "missing_lines": [251, 252, 257, 267, 268, 269, 271, 272, 274], "excluded_lines": [], "start_line": 241}, "get_export_formats": {"executed_lines": [288], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "preview_export": {"executed_lines": [318, 319, 320, 321, 324, 325, 329, 331, 335, 341, 343, 344, 347, 348, 349, 359, 363], "summary": {"covered_lines": 17, "num_statements": 24, "percent_covered": 70.83333333333333, "percent_covered_display": "71", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 70.83333333333333, "percent_statements_covered_display": "71"}, "missing_lines": [326, 332, 350, 351, 352, 355, 356], "excluded_lines": [], "start_line": 311}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 24, 25, 28, 29, 32, 35, 36, 37, 38, 39, 40, 43, 44, 238, 241, 281, 284, 310, 311], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExportRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "ExportResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 24, 25, 28, 29, 32, 35, 36, 37, 38, 39, 40, 43, 44, 55, 56, 57, 58, 61, 62, 63, 66, 68, 69, 72, 73, 76, 77, 79, 93, 115, 116, 117, 120, 121, 122, 123, 124, 125, 129, 132, 134, 143, 145, 147, 148, 150, 153, 154, 155, 157, 160, 163, 166, 167, 171, 172, 175, 176, 178, 190, 192, 195, 200, 201, 204, 205, 209, 210, 214, 215, 218, 219, 221, 238, 241, 249, 250, 255, 256, 260, 261, 263, 264, 281, 284, 288, 310, 311, 318, 319, 320, 321, 324, 325, 329, 331, 335, 341, 343, 344, 347, 348, 349, 359, 363], "summary": {"covered_lines": 122, "num_statements": 144, "percent_covered": 84.72222222222223, "percent_covered_display": "85", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 84.72222222222223, "percent_statements_covered_display": "85"}, "missing_lines": [126, 127, 158, 230, 231, 233, 251, 252, 257, 267, 268, 269, 271, 272, 274, 326, 332, 350, 351, 352, 355, 356], "excluded_lines": [], "start_line": 1}}}, "src/api/behavior_files.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 20, 23, 26, 29, 32, 33, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 55, 58, 63, 73, 74, 79, 80, 84, 86, 87, 121, 123, 124, 125, 126, 134, 135, 138, 141, 167, 172, 208, 214, 265, 266, 288, 293], "summary": {"covered_lines": 56, "num_statements": 122, "percent_covered": 45.90163934426229, "percent_covered_display": "46", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 45.90163934426229, "percent_statements_covered_display": "46"}, "missing_lines": [75, 76, 81, 90, 92, 93, 94, 97, 98, 99, 105, 108, 109, 118, 147, 148, 149, 150, 152, 153, 154, 156, 182, 183, 184, 185, 188, 189, 190, 193, 194, 195, 197, 224, 225, 226, 227, 230, 231, 232, 235, 236, 243, 244, 246, 247, 248, 250, 254, 274, 275, 276, 277, 280, 281, 282, 285, 303, 304, 305, 306, 309, 310, 311, 314, 316], "excluded_lines": [], "functions": {"get_conversion_behavior_files": {"executed_lines": [73, 74, 79, 80, 84, 86, 87], "summary": {"covered_lines": 7, "num_statements": 21, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [75, 76, 81, 90, 92, 93, 94, 97, 98, 99, 105, 108, 109, 118], "excluded_lines": [], "start_line": 63}, "dict_to_tree_nodes": {"executed_lines": [123, 124, 125, 126, 134, 135], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "get_behavior_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [147, 148, 149, 150, 152, 153, 154, 156], "excluded_lines": [], "start_line": 141}, "update_behavior_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [182, 183, 184, 185, 188, 189, 190, 193, 194, 195, 197], "excluded_lines": [], "start_line": 172}, "create_behavior_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [224, 225, 226, 227, 230, 231, 232, 235, 236, 243, 244, 246, 247, 248, 250, 254], "excluded_lines": [], "start_line": 214}, "delete_behavior_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [274, 275, 276, 277, 280, 281, 282, 285], "excluded_lines": [], "start_line": 266}, "get_behavior_files_by_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [303, 304, 305, 306, 309, 310, 311, 314, 316], "excluded_lines": [], "start_line": 293}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 20, 23, 26, 29, 32, 33, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 55, 58, 63, 121, 138, 141, 167, 172, 208, 214, 265, 266, 288, 293], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BehaviorFileCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "BehaviorFileUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "BehaviorFileResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "BehaviorFileTreeNode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 20, 23, 26, 29, 32, 33, 34, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 55, 58, 63, 73, 74, 79, 80, 84, 86, 87, 121, 123, 124, 125, 126, 134, 135, 138, 141, 167, 172, 208, 214, 265, 266, 288, 293], "summary": {"covered_lines": 56, "num_statements": 122, "percent_covered": 45.90163934426229, "percent_covered_display": "46", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 45.90163934426229, "percent_statements_covered_display": "46"}, "missing_lines": [75, 76, 81, 90, 92, 93, 94, 97, 98, 99, 105, 108, 109, 118, 147, 148, 149, 150, 152, 153, 154, 156, 182, 183, 184, 185, 188, 189, 190, 193, 194, 195, 197, 224, 225, 226, 227, 230, 231, 232, 235, 236, 243, 244, 246, 247, 248, 250, 254, 274, 275, 276, 277, 280, 281, 282, 285, 303, 304, 305, 306, 309, 310, 311, 314, 316], "excluded_lines": [], "start_line": 1}}}, "src/api/behavior_templates.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 17, 18, 19, 23, 27, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 75, 115, 120, 129, 134, 186, 191, 223, 229, 284, 289, 344, 345, 366, 371, 421, 426], "summary": {"covered_lines": 62, "num_statements": 134, "percent_covered": 46.26865671641791, "percent_covered_display": "46", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 46.26865671641791, "percent_statements_covered_display": "46"}, "missing_lines": [126, 151, 152, 153, 156, 167, 198, 199, 200, 201, 203, 204, 205, 207, 240, 241, 242, 248, 249, 261, 262, 263, 264, 265, 266, 268, 297, 298, 299, 300, 303, 304, 305, 308, 309, 310, 311, 317, 318, 321, 322, 323, 324, 325, 326, 328, 352, 353, 354, 355, 358, 359, 360, 363, 382, 383, 384, 385, 388, 389, 390, 393, 395, 396, 397, 400, 401, 407, 408, 410, 432, 510], "excluded_lines": [], "functions": {"get_template_categories": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [126], "excluded_lines": [], "start_line": 120}, "get_behavior_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [151, 152, 153, 156, 167], "excluded_lines": [], "start_line": 134}, "get_behavior_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [198, 199, 200, 201, 203, 204, 205, 207], "excluded_lines": [], "start_line": 191}, "create_behavior_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [240, 241, 242, 248, 249, 261, 262, 263, 264, 265, 266, 268], "excluded_lines": [], "start_line": 229}, "update_behavior_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [297, 298, 299, 300, 303, 304, 305, 308, 309, 310, 311, 317, 318, 321, 322, 323, 324, 325, 326, 328], "excluded_lines": [], "start_line": 289}, "delete_behavior_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [352, 353, 354, 355, 358, 359, 360, 363], "excluded_lines": [], "start_line": 345}, "apply_behavior_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [382, 383, 384, 385, 388, 389, 390, 393, 395, 396, 397, 400, 401, 407, 408, 410], "excluded_lines": [], "start_line": 371}, "get_predefined_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [432, 510], "excluded_lines": [], "start_line": 426}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 17, 18, 19, 23, 27, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 75, 115, 120, 129, 134, 186, 191, 223, 229, 284, 289, 344, 345, 366, 371, 421, 426], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BehaviorTemplateCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "BehaviorTemplateUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "BehaviorTemplateResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "BehaviorTemplateCategory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 10, 14, 17, 18, 19, 23, 27, 30, 31, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 75, 115, 120, 129, 134, 186, 191, 223, 229, 284, 289, 344, 345, 366, 371, 421, 426], "summary": {"covered_lines": 62, "num_statements": 134, "percent_covered": 46.26865671641791, "percent_covered_display": "46", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 46.26865671641791, "percent_statements_covered_display": "46"}, "missing_lines": [126, 151, 152, 153, 156, 167, 198, 199, 200, 201, 203, 204, 205, 207, 240, 241, 242, 248, 249, 261, 262, 263, 264, 265, 266, 268, 297, 298, 299, 300, 303, 304, 305, 308, 309, 310, 311, 317, 318, 321, 322, 323, 324, 325, 326, 328, 352, 353, 354, 355, 358, 359, 360, 363, 382, 383, 384, 385, 388, 389, 390, 393, 395, 396, 397, 400, 401, 407, 408, 410, 432, 510], "excluded_lines": [], "start_line": 1}}}, "src/api/behavioral_testing.py": {"executed_lines": [8, 9, 10, 11, 12, 13, 16, 17, 18, 20, 21, 24, 28, 29, 32, 35, 36, 37, 38, 39, 42, 45, 48, 49, 50, 51, 52, 57, 60, 61, 62, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 91, 92, 93, 96, 97, 153, 154, 183, 184, 225, 226, 262, 263, 285], "summary": {"covered_lines": 63, "num_statements": 110, "percent_covered": 57.27272727272727, "percent_covered_display": "57", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 57.27272727272727, "percent_statements_covered_display": "57"}, "missing_lines": [22, 25, 110, 111, 114, 115, 122, 131, 135, 146, 147, 148, 150, 164, 167, 178, 179, 180, 194, 196, 216, 217, 218, 220, 237, 238, 239, 242, 253, 255, 256, 257, 259, 273, 275, 276, 278, 279, 280, 282, 298, 299, 302, 305, 308, 310, 311], "excluded_lines": [], "functions": {"create_behavioral_test": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [110, 111, 114, 115, 122, 131, 135, 146, 147, 148, 150], "excluded_lines": [], "start_line": 97}, "get_behavioral_test": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [164, 167, 178, 179, 180], "excluded_lines": [], "start_line": 154}, "get_test_scenarios": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [194, 196, 216, 217, 218, 220], "excluded_lines": [], "start_line": 184}, "get_test_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 238, 239, 242, 253, 255, 256, 257, 259], "excluded_lines": [], "start_line": 226}, "delete_behavioral_test": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [273, 275, 276, 278, 279, 280, 282], "excluded_lines": [], "start_line": 263}, "execute_behavioral_test_async": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [298, 299, 302, 305, 308, 310, 311], "excluded_lines": [], "start_line": 285}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 16, 17, 18, 20, 21, 24, 28, 29, 32, 35, 36, 37, 38, 39, 42, 45, 48, 49, 50, 51, 52, 57, 60, 61, 62, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 91, 92, 93, 96, 97, 153, 154, 183, 184, 225, 226, 262, 263, 285], "summary": {"covered_lines": 63, "num_statements": 65, "percent_covered": 96.92307692307692, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.92307692307692, "percent_statements_covered_display": "97"}, "missing_lines": [22, 25], "excluded_lines": [], "start_line": 1}}, "classes": {"TestScenario": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "ExpectedBehavior": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "BehavioralTestRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "BehavioralTestResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestScenarioResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 16, 17, 18, 20, 21, 24, 28, 29, 32, 35, 36, 37, 38, 39, 42, 45, 48, 49, 50, 51, 52, 57, 60, 61, 62, 65, 66, 67, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 84, 87, 88, 89, 90, 91, 92, 93, 96, 97, 153, 154, 183, 184, 225, 226, 262, 263, 285], "summary": {"covered_lines": 63, "num_statements": 110, "percent_covered": 57.27272727272727, "percent_covered_display": "57", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 57.27272727272727, "percent_statements_covered_display": "57"}, "missing_lines": [22, 25, 110, 111, 114, 115, 122, 131, 135, 146, 147, 148, 150, 164, 167, 178, 179, 180, 194, 196, 216, 217, 218, 220, 237, 238, 239, 242, 253, 255, 256, 257, 259, 273, 275, 276, 278, 279, 280, 282, 298, 299, 302, 305, 308, 310, 311], "excluded_lines": [], "start_line": 1}}}, "src/api/build_performance.py": {"executed_lines": [10, 11, 12, 14, 16, 26, 36, 39, 40, 65, 66, 88, 89, 103, 104, 128, 129, 150, 151, 163, 164, 183, 184, 203, 204, 220, 221, 240, 241], "summary": {"covered_lines": 29, "num_statements": 76, "percent_covered": 38.1578947368421, "percent_covered_display": "38", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 38.1578947368421, "percent_statements_covered_display": "38"}, "missing_lines": [47, 48, 55, 61, 62, 72, 73, 81, 82, 84, 85, 93, 94, 96, 97, 99, 100, 113, 114, 121, 122, 124, 125, 135, 136, 143, 144, 146, 147, 155, 157, 158, 160, 175, 177, 178, 180, 194, 195, 197, 198, 200, 217, 227, 249, 250, 254], "excluded_lines": [], "functions": {"start_performance_tracking": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [47, 48, 55, 61, 62], "excluded_lines": [], "start_line": 40}, "update_stage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [72, 73, 81, 82, 84, 85], "excluded_lines": [], "start_line": 66}, "start_stage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [93, 94, 96, 97, 99, 100], "excluded_lines": [], "start_line": 89}, "complete_stage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [113, 114, 121, 122, 124, 125], "excluded_lines": [], "start_line": 104}, "end_performance_tracking": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [135, 136, 143, 144, 146, 147], "excluded_lines": [], "start_line": 129}, "get_build_performance_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [155, 157, 158, 160], "excluded_lines": [], "start_line": 151}, "get_build_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [175, 177, 178, 180], "excluded_lines": [], "start_line": 164}, "get_build_summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [194, 195, 197, 198, 200], "excluded_lines": [], "start_line": 184}, "get_performance_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [217], "excluded_lines": [], "start_line": 204}, "get_available_stages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [227], "excluded_lines": [], "start_line": 221}, "list_builds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [249, 250, 254], "excluded_lines": [], "start_line": 241}, "": {"executed_lines": [10, 11, 12, 14, 16, 26, 36, 39, 40, 65, 66, 88, 89, 103, 104, 128, 129, 150, 151, 163, 164, 183, 184, 203, 204, 220, 221, 240, 241], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [10, 11, 12, 14, 16, 26, 36, 39, 40, 65, 66, 88, 89, 103, 104, 128, 129, 150, 151, 163, 164, 183, 184, 203, 204, 220, 221, 240, 241], "summary": {"covered_lines": 29, "num_statements": 76, "percent_covered": 38.1578947368421, "percent_covered_display": "38", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 38.1578947368421, "percent_statements_covered_display": "38"}, "missing_lines": [47, 48, 55, 61, 62, 72, 73, 81, 82, 84, 85, 93, 94, 96, 97, 99, 100, 113, 114, 121, 122, 124, 125, 135, 136, 143, 144, 146, 147, 155, 157, 158, 160, 175, 177, 178, 180, 194, 195, 197, 198, 200, 217, 227, 249, 250, 254], "excluded_lines": [], "start_line": 1}}}, "src/api/comparison.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 15, 18, 19, 20, 23, 24, 25, 26, 27, 29, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 82, 83, 86, 87, 88, 92, 97, 99, 102, 103, 104, 105, 108, 109, 110, 113, 114, 118, 119, 121, 122, 123, 124, 142, 143, 217, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 241, 242, 243, 244], "summary": {"covered_lines": 84, "num_statements": 132, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [30, 61, 129, 130, 131, 137, 144, 146, 147, 148, 149, 150, 154, 156, 157, 158, 159, 160, 164, 166, 167, 168, 169, 170, 176, 185, 186, 187, 194, 196, 197, 198, 199, 203, 204, 207, 209, 211, 246, 251, 252, 254, 255, 257, 258, 259, 260, 274], "excluded_lines": [], "functions": {"create_comparison": {"executed_lines": [118, 119, 121, 122, 123, 124, 142, 143], "summary": {"covered_lines": 8, "num_statements": 44, "percent_covered": 18.181818181818183, "percent_covered_display": "18", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18"}, "missing_lines": [129, 130, 131, 137, 144, 146, 147, 148, 149, 150, 154, 156, 157, 158, 159, 160, 164, 166, 167, 168, 169, 170, 176, 185, 186, 187, 194, 196, 197, 198, 199, 203, 204, 207, 209, 211], "excluded_lines": [], "start_line": 114}, "get_comparison_result": {"executed_lines": [241, 242, 243, 244], "summary": {"covered_lines": 4, "num_statements": 14, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [246, 251, 252, 254, 255, 257, 258, 259, 260, 274], "excluded_lines": [], "start_line": 238}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 15, 18, 19, 20, 23, 24, 25, 26, 27, 29, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 82, 83, 86, 87, 88, 92, 97, 99, 102, 103, 104, 105, 108, 109, 110, 113, 114, 217, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238], "summary": {"covered_lines": 72, "num_statements": 74, "percent_covered": 97.29729729729729, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.29729729729729, "percent_statements_covered_display": "97"}, "missing_lines": [30, 61], "excluded_lines": [], "start_line": 1}}, "classes": {"CreateComparisonRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "ComparisonResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "FeatureMappingResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "ComparisonResultResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 15, 18, 19, 20, 23, 24, 25, 26, 27, 29, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 82, 83, 86, 87, 88, 92, 97, 99, 102, 103, 104, 105, 108, 109, 110, 113, 114, 118, 119, 121, 122, 123, 124, 142, 143, 217, 218, 219, 220, 221, 222, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 241, 242, 243, 244], "summary": {"covered_lines": 84, "num_statements": 132, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [30, 61, 129, 130, 131, 137, 144, 146, 147, 148, 149, 150, 154, 156, 157, 158, 159, 160, 164, 166, 167, 168, 169, 170, 176, 185, 186, 187, 194, 196, 197, 198, 199, 203, 204, 207, 209, 211, 246, 251, 252, 254, 255, 257, 258, 259, 260, 274], "excluded_lines": [], "start_line": 1}}}, "src/api/conversions.py": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 22, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 51, 53, 56, 57, 58, 59, 60, 63, 66, 69, 78, 81, 85, 90, 91, 92, 93, 95, 98, 101, 104, 107, 108, 109, 112, 118, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 142, 145, 146, 147, 148, 149, 152, 155, 156, 157, 158, 159, 162, 165, 166, 167, 168, 169, 173, 184, 188, 189, 192, 193, 197, 200, 201, 205, 206, 208, 211, 224, 226, 229, 230, 231, 234, 237, 247, 249, 250, 255, 258, 279, 299, 300, 302, 309, 313, 316, 352, 353, 416, 422, 466, 473, 476, 477, 484, 485, 492, 493, 495, 496, 502, 503, 504, 505, 508, 511, 512, 513, 514, 515, 518, 519, 520, 539, 542, 543, 552, 553, 568, 569, 581, 584, 585, 586, 594, 601, 610, 612, 620, 625, 655, 656, 660, 661, 662, 668, 669, 671, 675, 685, 687, 700, 702, 705, 710, 737, 740, 744, 745, 746, 747, 750, 751, 752, 753, 755, 756, 758, 772, 780, 785, 798, 799, 806, 807, 818, 822, 825, 829, 844, 845, 851, 859, 861, 862, 864, 865, 866, 870, 877, 878, 879, 881, 889, 894, 968, 973, 1063, 1068, 1112, 1117, 1238, 1243], "summary": {"covered_lines": 217, "num_statements": 392, "percent_covered": 55.357142857142854, "percent_covered_display": "55", "missing_lines": 175, "excluded_lines": 0, "percent_statements_covered": 55.357142857142854, "percent_statements_covered_display": "55"}, "missing_lines": [72, 73, 74, 94, 269, 270, 271, 273, 274, 276, 303, 304, 310, 333, 334, 335, 338, 339, 340, 343, 346, 348, 383, 385, 387, 399, 401, 402, 404, 405, 406, 407, 409, 410, 412, 467, 478, 486, 497, 498, 499, 524, 526, 527, 528, 529, 531, 532, 533, 534, 555, 556, 558, 559, 560, 596, 598, 657, 672, 741, 800, 846, 852, 867, 868, 871, 925, 926, 932, 933, 934, 935, 941, 944, 953, 956, 957, 959, 998, 1000, 1002, 1003, 1008, 1009, 1015, 1016, 1017, 1023, 1024, 1027, 1030, 1031, 1032, 1037, 1040, 1041, 1043, 1044, 1047, 1048, 1049, 1052, 1054, 1083, 1084, 1086, 1087, 1091, 1092, 1094, 1095, 1096, 1097, 1098, 1100, 1101, 1103, 1127, 1129, 1131, 1132, 1136, 1137, 1142, 1143, 1144, 1147, 1148, 1149, 1150, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1165, 1166, 1167, 1173, 1174, 1175, 1179, 1181, 1182, 1183, 1184, 1186, 1189, 1190, 1193, 1202, 1205, 1214, 1217, 1219, 1226, 1227, 1229, 1230, 1231, 1232, 1249, 1250, 1252, 1253, 1258, 1259, 1262, 1263, 1265], "excluded_lines": [], "functions": {"get_security_scanner": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [72, 73, 74], "excluded_lines": [], "start_line": 69}, "ConversionOptions.validate_assumptions": {"executed_lines": [93, 95], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [94], "excluded_lines": [], "start_line": 92}, "sanitize_filename": {"executed_lines": [184, 188, 189, 192, 193, 197, 200, 201, 205, 206, 208], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "validate_path_safe": {"executed_lines": [224, 226, 229, 230, 231, 234], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "validate_file_type": {"executed_lines": [247, 249, 250, 255], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "validate_file_size": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [269, 270, 271, 273, 274, 276], "excluded_lines": [], "start_line": 258}, "scan_uploaded_file": {"executed_lines": [299, 300, 302, 309, 313], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [303, 304, 310], "excluded_lines": [], "start_line": 279}, "validate_and_scan_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [333, 334, 335, 338, 339, 340, 343, 346, 348], "excluded_lines": [], "start_line": 316}, "websocket_conversion_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [383, 385, 387, 399, 401, 402, 404, 405, 406, 407, 409, 410, 412], "excluded_lines": [], "start_line": 353}, "create_conversion": {"executed_lines": [466, 473, 476, 477, 484, 485, 492, 493, 495, 496, 502, 503, 504, 505, 508, 511, 512, 513, 514, 515, 518, 519, 520, 539, 542, 543, 552, 553, 568, 569, 581, 584, 585, 586, 594, 601, 610, 612], "summary": {"covered_lines": 38, "num_statements": 60, "percent_covered": 63.333333333333336, "percent_covered_display": "63", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 63.333333333333336, "percent_statements_covered_display": "63"}, "missing_lines": [467, 478, 486, 497, 498, 499, 524, 526, 527, 528, 529, 531, 532, 533, 534, 555, 556, 558, 559, 560, 596, 598], "excluded_lines": [], "start_line": 422}, "get_conversion": {"executed_lines": [655, 656, 660, 661, 662, 668, 669, 671, 675, 685, 687, 700, 702], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87"}, "missing_lines": [657, 672], "excluded_lines": [], "start_line": 625}, "list_conversions": {"executed_lines": [737, 740, 744, 745, 746, 747, 750, 751, 752, 753, 755, 756, 758, 772], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [741], "excluded_lines": [], "start_line": 710}, "delete_conversion": {"executed_lines": [798, 799, 806, 807, 818, 822], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [800], "excluded_lines": [], "start_line": 785}, "download_conversion": {"executed_lines": [844, 845, 851, 859, 861, 862, 864, 865, 866, 870, 877, 878, 879, 881], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [846, 852, 867, 868, 871], "excluded_lines": [], "start_line": 829}, "init_chunked_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [925, 926, 932, 933, 934, 935, 941, 944, 953, 956, 957, 959], "excluded_lines": [], "start_line": 894}, "upload_chunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [998, 1000, 1002, 1003, 1008, 1009, 1015, 1016, 1017, 1023, 1024, 1027, 1030, 1031, 1032, 1037, 1040, 1041, 1043, 1044, 1047, 1048, 1049, 1052, 1054], "excluded_lines": [], "start_line": 973}, "get_upload_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1083, 1084, 1086, 1087, 1091, 1092, 1094, 1095, 1096, 1097, 1098, 1100, 1101, 1103], "excluded_lines": [], "start_line": 1068}, "complete_chunked_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 49, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1127, 1129, 1131, 1132, 1136, 1137, 1142, 1143, 1144, 1147, 1148, 1149, 1150, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1165, 1166, 1167, 1173, 1174, 1175, 1179, 1181, 1182, 1183, 1184, 1186, 1189, 1190, 1193, 1202, 1205, 1214, 1217, 1219, 1226, 1227, 1229, 1230, 1231, 1232], "excluded_lines": [], "start_line": 1117}, "cancel_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1249, 1250, 1252, 1253, 1258, 1259, 1262, 1263, 1265], "excluded_lines": [], "start_line": 1243}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 22, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 51, 53, 56, 57, 58, 59, 60, 63, 66, 69, 78, 81, 85, 90, 91, 92, 98, 101, 104, 107, 108, 109, 112, 118, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 142, 145, 146, 147, 148, 149, 152, 155, 156, 157, 158, 159, 162, 165, 166, 167, 168, 169, 173, 211, 237, 258, 279, 316, 352, 353, 416, 422, 620, 625, 705, 710, 780, 785, 825, 829, 889, 894, 968, 973, 1063, 1068, 1112, 1117, 1238, 1243], "summary": {"covered_lines": 104, "num_statements": 104, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionOptions": {"executed_lines": [93, 95], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [94], "excluded_lines": [], "start_line": 78}, "ConversionCreateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "ConversionCreateResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "ConversionStatusResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "ConversionListResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "ChunkUploadInitResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "ChunkUploadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152}, "UploadProgressResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 22, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 51, 53, 56, 57, 58, 59, 60, 63, 66, 69, 78, 81, 85, 90, 91, 92, 98, 101, 104, 107, 108, 109, 112, 118, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 135, 136, 137, 138, 142, 145, 146, 147, 148, 149, 152, 155, 156, 157, 158, 159, 162, 165, 166, 167, 168, 169, 173, 184, 188, 189, 192, 193, 197, 200, 201, 205, 206, 208, 211, 224, 226, 229, 230, 231, 234, 237, 247, 249, 250, 255, 258, 279, 299, 300, 302, 309, 313, 316, 352, 353, 416, 422, 466, 473, 476, 477, 484, 485, 492, 493, 495, 496, 502, 503, 504, 505, 508, 511, 512, 513, 514, 515, 518, 519, 520, 539, 542, 543, 552, 553, 568, 569, 581, 584, 585, 586, 594, 601, 610, 612, 620, 625, 655, 656, 660, 661, 662, 668, 669, 671, 675, 685, 687, 700, 702, 705, 710, 737, 740, 744, 745, 746, 747, 750, 751, 752, 753, 755, 756, 758, 772, 780, 785, 798, 799, 806, 807, 818, 822, 825, 829, 844, 845, 851, 859, 861, 862, 864, 865, 866, 870, 877, 878, 879, 881, 889, 894, 968, 973, 1063, 1068, 1112, 1117, 1238, 1243], "summary": {"covered_lines": 215, "num_statements": 389, "percent_covered": 55.26992287917738, "percent_covered_display": "55", "missing_lines": 174, "excluded_lines": 0, "percent_statements_covered": 55.26992287917738, "percent_statements_covered_display": "55"}, "missing_lines": [72, 73, 74, 269, 270, 271, 273, 274, 276, 303, 304, 310, 333, 334, 335, 338, 339, 340, 343, 346, 348, 383, 385, 387, 399, 401, 402, 404, 405, 406, 407, 409, 410, 412, 467, 478, 486, 497, 498, 499, 524, 526, 527, 528, 529, 531, 532, 533, 534, 555, 556, 558, 559, 560, 596, 598, 657, 672, 741, 800, 846, 852, 867, 868, 871, 925, 926, 932, 933, 934, 935, 941, 944, 953, 956, 957, 959, 998, 1000, 1002, 1003, 1008, 1009, 1015, 1016, 1017, 1023, 1024, 1027, 1030, 1031, 1032, 1037, 1040, 1041, 1043, 1044, 1047, 1048, 1049, 1052, 1054, 1083, 1084, 1086, 1087, 1091, 1092, 1094, 1095, 1096, 1097, 1098, 1100, 1101, 1103, 1127, 1129, 1131, 1132, 1136, 1137, 1142, 1143, 1144, 1147, 1148, 1149, 1150, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1165, 1166, 1167, 1173, 1174, 1175, 1179, 1181, 1182, 1183, 1184, 1186, 1189, 1190, 1193, 1202, 1205, 1214, 1217, 1219, 1226, 1227, 1229, 1230, 1231, 1232, 1249, 1250, 1252, 1253, 1258, 1259, 1262, 1263, 1265], "excluded_lines": [], "start_line": 1}}}, "src/api/email_verification.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 20, 23, 26, 27, 30, 33, 34, 37, 40, 43, 46, 49, 50, 121, 122, 165, 166], "summary": {"covered_lines": 27, "num_statements": 77, "percent_covered": 35.064935064935064, "percent_covered_display": "35", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 35.064935064935064, "percent_statements_covered_display": "35"}, "missing_lines": [61, 64, 66, 67, 69, 70, 71, 77, 78, 81, 82, 85, 93, 94, 95, 98, 99, 101, 111, 113, 115, 133, 136, 142, 144, 145, 151, 152, 153, 155, 157, 159, 177, 180, 186, 188, 190, 195, 197, 202, 203, 205, 206, 208, 211, 212, 214, 224, 226, 228], "excluded_lines": [], "functions": {"register_with_verification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61, 64, 66, 67, 69, 70, 71, 77, 78, 81, 82, 85, 93, 94, 95, 98, 99, 101, 111, 113, 115], "excluded_lines": [], "start_line": 50}, "verify_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [133, 136, 142, 144, 145, 151, 152, 153, 155, 157, 159], "excluded_lines": [], "start_line": 122}, "resend_verification": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [177, 180, 186, 188, 190, 195, 197, 202, 203, 205, 206, 208, 211, 212, 214, 224, 226, 228], "excluded_lines": [], "start_line": 166}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 20, 23, 26, 27, 30, 33, 34, 37, 40, 43, 46, 49, 50, 121, 122, 165, 166], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RegisterWithVerificationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "RegisterWithVerificationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "ResendVerificationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ResendVerificationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 20, 23, 26, 27, 30, 33, 34, 37, 40, 43, 46, 49, 50, 121, 122, 165, 166], "summary": {"covered_lines": 27, "num_statements": 77, "percent_covered": 35.064935064935064, "percent_covered_display": "35", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 35.064935064935064, "percent_statements_covered_display": "35"}, "missing_lines": [61, 64, 66, 67, 69, 70, 71, 77, 78, 81, 82, 85, 93, 94, 95, 98, 99, 101, 111, 113, 115, 133, 136, 142, 144, 145, 151, 152, 153, 155, 157, 159, 177, 180, 186, 188, 190, 195, 197, 202, 203, 205, 206, 208, 211, 212, 214, 224, 226, 228], "excluded_lines": [], "start_line": 1}}}, "src/api/embeddings.py": {"executed_lines": [1, 2, 3, 5, 7, 9, 10, 12, 13, 15, 16, 17, 20, 34, 35, 38, 43, 62, 65, 66, 67, 71, 74, 79, 85, 90, 91, 97, 98, 103, 108, 112, 116, 121, 147, 148, 151, 155, 158, 159, 165, 168, 170, 171, 179, 182, 183, 184, 185, 192, 220, 237, 242, 267, 269, 272, 279, 280, 283, 289, 296, 299, 301, 302, 305, 306, 307, 320, 321, 324, 334, 342, 348, 368, 372, 381, 382, 389, 391, 392, 398, 399, 400, 401, 414, 423, 427, 434, 435, 442, 445, 446, 447, 448, 461, 469, 472, 473, 474, 477, 481, 484, 487, 490, 493, 496, 499, 500, 501, 502, 503, 504, 505, 506, 509, 512, 513, 514, 515, 516, 519, 520, 551, 552, 553, 555, 558, 559, 565, 567, 571, 575, 578, 579, 581, 595, 596, 597, 599, 600, 601, 607, 610, 615, 622, 623, 624, 626, 630, 633, 634, 635, 639, 642, 644, 654, 657, 658, 698, 711, 713, 715, 722, 744, 745, 758, 759, 760, 763, 783, 803, 823, 824, 848, 850, 851, 852, 853, 855, 857, 858, 859, 862, 863, 868, 869, 871, 872, 874, 877, 880, 882, 883, 884, 888, 889, 894, 896, 897, 899, 915, 916, 918, 921, 924, 926, 927, 929, 931, 934, 935, 937, 940, 943, 945, 946, 949, 951, 953, 961, 964, 966, 997, 1014, 1017, 1024, 1027], "summary": {"covered_lines": 227, "num_statements": 354, "percent_covered": 64.12429378531074, "percent_covered_display": "64", "missing_lines": 127, "excluded_lines": 0, "percent_statements_covered": 64.12429378531074, "percent_statements_covered_display": "64"}, "missing_lines": [109, 156, 169, 174, 175, 176, 187, 194, 195, 196, 200, 201, 202, 222, 223, 225, 228, 229, 231, 232, 234, 290, 322, 354, 355, 356, 360, 361, 362, 383, 384, 436, 437, 560, 572, 582, 583, 585, 587, 588, 589, 590, 591, 592, 602, 636, 640, 659, 660, 663, 666, 668, 680, 683, 684, 685, 686, 687, 690, 692, 694, 695, 700, 701, 702, 703, 704, 705, 706, 707, 708, 730, 731, 732, 736, 737, 738, 750, 766, 767, 768, 770, 773, 774, 776, 778, 779, 780, 786, 787, 788, 790, 793, 794, 796, 798, 799, 800, 806, 807, 808, 810, 813, 814, 816, 818, 819, 820, 865, 878, 885, 900, 901, 922, 967, 970, 972, 975, 976, 977, 978, 979, 994, 1025, 1040, 1041, 1042], "excluded_lines": [], "functions": {"create_or_get_embedding": {"executed_lines": [62, 65, 66, 67, 71, 74, 79, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "search_similar_embeddings": {"executed_lines": [97, 98, 103, 108, 112], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [109], "excluded_lines": [], "start_line": 91}, "generate_embeddings": {"executed_lines": [147, 148, 151, 155, 158, 159, 165, 168, 170, 171, 179, 182, 183, 184, 185, 192], "summary": {"covered_lines": 16, "num_statements": 28, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [156, 169, 174, 175, 176, 187, 194, 195, 196, 200, 201, 202], "excluded_lines": [], "start_line": 121}, "_get_ai_engine_indexing": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [222, 223, 225, 228, 229, 231, 232, 234], "excluded_lines": [], "start_line": 220}, "index_document": {"executed_lines": [267, 269, 272, 279, 280, 283, 289, 296, 299, 301, 302, 305, 306, 307, 320, 321, 324, 334, 342, 348], "summary": {"covered_lines": 20, "num_statements": 28, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [290, 322, 354, 355, 356, 360, 361, 362], "excluded_lines": [], "start_line": 242}, "get_document": {"executed_lines": [381, 382, 389, 391, 392, 398, 399, 400, 401, 414], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [383, 384], "excluded_lines": [], "start_line": 372}, "get_document_chunks": {"executed_lines": [434, 435, 442, 445, 446, 447, 448, 461], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [436, 437], "excluded_lines": [], "start_line": 427}, "hybrid_search": {"executed_lines": [551, 552, 553, 555, 558, 559, 565, 567, 571, 575, 578, 579, 581, 595, 596, 597, 599, 600, 601, 607, 610, 615, 622, 623, 624, 626, 630, 633, 634, 635, 639, 642, 644, 654, 657, 658, 698, 711, 713, 715, 722], "summary": {"covered_lines": 41, "num_statements": 85, "percent_covered": 48.23529411764706, "percent_covered_display": "48", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 48.23529411764706, "percent_statements_covered_display": "48"}, "missing_lines": [560, 572, 582, 583, 585, 587, 588, 589, 590, 591, 592, 602, 636, 640, 659, 660, 663, 666, 668, 680, 683, 684, 685, 686, 687, 690, 692, 694, 695, 700, 701, 702, 703, 704, 705, 706, 707, 708, 730, 731, 732, 736, 737, 738], "excluded_lines": [], "start_line": 520}, "hybrid_search_legacy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [750], "excluded_lines": [], "start_line": 745}, "get_hybrid_engine": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [766, 767, 768, 770, 773, 774, 776, 778, 779, 780], "excluded_lines": [], "start_line": 763}, "get_reranker": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [786, 787, 788, 790, 793, 794, 796, 798, 799, 800], "excluded_lines": [], "start_line": 783}, "get_query_expander": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [806, 807, 808, 810, 813, 814, 816, 818, 819, 820], "excluded_lines": [], "start_line": 803}, "search_similar_embeddings_enhanced": {"executed_lines": [848, 850, 851, 852, 853, 855, 857, 858, 859, 862, 863, 868, 869, 871, 872, 874, 877, 880, 882, 883, 884, 888, 889, 894, 896, 897, 899, 915, 916, 918, 921, 924, 926, 927, 929, 931, 934, 935, 937, 940, 943, 945, 946, 949, 951, 953, 961, 964, 966, 997, 1014, 1017, 1024, 1027], "summary": {"covered_lines": 54, "num_statements": 73, "percent_covered": 73.97260273972603, "percent_covered_display": "74", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 73.97260273972603, "percent_statements_covered_display": "74"}, "missing_lines": [865, 878, 885, 900, 901, 922, 967, 970, 972, 975, 976, 977, 978, 979, 994, 1025, 1040, 1041, 1042], "excluded_lines": [], "start_line": 824}, "": {"executed_lines": [1, 2, 3, 5, 7, 9, 10, 12, 13, 15, 16, 17, 20, 34, 35, 38, 43, 90, 91, 116, 121, 220, 237, 242, 368, 372, 423, 427, 469, 472, 473, 474, 477, 481, 484, 487, 490, 493, 496, 499, 500, 501, 502, 503, 504, 505, 506, 509, 512, 513, 514, 515, 516, 519, 520, 744, 745, 758, 759, 760, 763, 783, 803, 823, 824], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"HybridSearchRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 469}, "HybridSearchResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 496}, "HybridSearchResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 509}, "": {"executed_lines": [1, 2, 3, 5, 7, 9, 10, 12, 13, 15, 16, 17, 20, 34, 35, 38, 43, 62, 65, 66, 67, 71, 74, 79, 85, 90, 91, 97, 98, 103, 108, 112, 116, 121, 147, 148, 151, 155, 158, 159, 165, 168, 170, 171, 179, 182, 183, 184, 185, 192, 220, 237, 242, 267, 269, 272, 279, 280, 283, 289, 296, 299, 301, 302, 305, 306, 307, 320, 321, 324, 334, 342, 348, 368, 372, 381, 382, 389, 391, 392, 398, 399, 400, 401, 414, 423, 427, 434, 435, 442, 445, 446, 447, 448, 461, 469, 472, 473, 474, 477, 481, 484, 487, 490, 493, 496, 499, 500, 501, 502, 503, 504, 505, 506, 509, 512, 513, 514, 515, 516, 519, 520, 551, 552, 553, 555, 558, 559, 565, 567, 571, 575, 578, 579, 581, 595, 596, 597, 599, 600, 601, 607, 610, 615, 622, 623, 624, 626, 630, 633, 634, 635, 639, 642, 644, 654, 657, 658, 698, 711, 713, 715, 722, 744, 745, 758, 759, 760, 763, 783, 803, 823, 824, 848, 850, 851, 852, 853, 855, 857, 858, 859, 862, 863, 868, 869, 871, 872, 874, 877, 880, 882, 883, 884, 888, 889, 894, 896, 897, 899, 915, 916, 918, 921, 924, 926, 927, 929, 931, 934, 935, 937, 940, 943, 945, 946, 949, 951, 953, 961, 964, 966, 997, 1014, 1017, 1024, 1027], "summary": {"covered_lines": 227, "num_statements": 354, "percent_covered": 64.12429378531074, "percent_covered_display": "64", "missing_lines": 127, "excluded_lines": 0, "percent_statements_covered": 64.12429378531074, "percent_statements_covered_display": "64"}, "missing_lines": [109, 156, 169, 174, 175, 176, 187, 194, 195, 196, 200, 201, 202, 222, 223, 225, 228, 229, 231, 232, 234, 290, 322, 354, 355, 356, 360, 361, 362, 383, 384, 436, 437, 560, 572, 582, 583, 585, 587, 588, 589, 590, 591, 592, 602, 636, 640, 659, 660, 663, 666, 668, 680, 683, 684, 685, 686, 687, 690, 692, 694, 695, 700, 701, 702, 703, 704, 705, 706, 707, 708, 730, 731, 732, 736, 737, 738, 750, 766, 767, 768, 770, 773, 774, 776, 778, 779, 780, 786, 787, 788, 790, 793, 794, 796, 798, 799, 800, 806, 807, 808, 810, 813, 814, 816, 818, 819, 820, 865, 878, 885, 900, 901, 922, 967, 970, 972, 975, 976, 977, 978, 979, 994, 1025, 1040, 1041, 1042], "excluded_lines": [], "start_line": 1}}}, "src/api/experiments.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 23, 24, 25, 26, 27, 29, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 88, 89, 90, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 116, 117, 119, 122, 123, 124, 128, 129, 138, 154, 155, 164, 167, 168, 169, 170, 172, 173, 175, 194, 195, 197, 199, 200, 201, 202, 204, 205, 206, 207, 209, 220, 221, 227, 228, 232, 234, 235, 236, 237, 240, 241, 242, 243, 249, 250, 251, 255, 256, 257, 258, 260, 271, 282, 283, 289, 290, 292, 294, 295, 296, 297, 299, 300, 301, 302, 304, 306, 307, 308, 314, 315, 321, 323, 324, 325, 326, 328, 330, 331, 332, 334, 343, 353, 354, 360, 364, 366, 368, 369, 370, 371, 373, 375, 376, 377, 379, 381, 394, 395, 401, 405, 409, 411, 412, 413, 414, 415, 417, 419, 420, 423, 424, 425, 441, 442, 448, 452, 459, 461, 462, 463, 467, 469, 470, 473, 474, 478, 481, 490, 507, 508, 512, 514, 515, 516, 520, 522, 523, 526, 527, 531, 534, 536, 544, 545, 549, 551, 552, 553, 554, 555, 558, 559, 561, 564, 566, 568, 569, 570, 596, 597, 603, 604, 612, 617, 618, 619, 620, 622, 623, 625, 626], "summary": {"covered_lines": 250, "num_statements": 310, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 80.64516129032258, "percent_statements_covered_display": "81"}, "missing_lines": [149, 150, 151, 189, 190, 191, 222, 223, 224, 284, 285, 286, 309, 310, 311, 355, 356, 357, 396, 397, 398, 421, 428, 429, 431, 443, 444, 445, 464, 465, 471, 475, 479, 500, 501, 502, 503, 504, 517, 518, 524, 528, 532, 537, 538, 539, 540, 541, 572, 584, 598, 599, 600, 624, 628, 629, 633, 648, 649, 650], "excluded_lines": [], "functions": {"create_experiment": {"executed_lines": [119, 122, 123, 124, 128, 129, 138], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [149, 150, 151], "excluded_lines": [], "start_line": 117}, "list_experiments": {"executed_lines": [164, 167, 168, 169, 170, 172, 173, 175], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [189, 190, 191], "excluded_lines": [], "start_line": 155}, "get_experiment": {"executed_lines": [197, 199, 200, 201, 202, 204, 205, 206, 207, 209, 220, 221], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [222, 223, 224], "excluded_lines": [], "start_line": 195}, "update_experiment": {"executed_lines": [232, 234, 235, 236, 237, 240, 241, 242, 243, 249, 250, 251, 255, 256, 257, 258, 260, 271, 282, 283], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 86.95652173913044, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.95652173913044, "percent_statements_covered_display": "87"}, "missing_lines": [284, 285, 286], "excluded_lines": [], "start_line": 228}, "delete_experiment": {"executed_lines": [292, 294, 295, 296, 297, 299, 300, 301, 302, 304, 306, 307, 308], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [309, 310, 311], "excluded_lines": [], "start_line": 290}, "create_experiment_variant": {"executed_lines": [321, 323, 324, 325, 326, 328, 330, 331, 332, 334, 343, 353, 354], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [355, 356, 357], "excluded_lines": [], "start_line": 315}, "list_experiment_variants": {"executed_lines": [366, 368, 369, 370, 371, 373, 375, 376, 377, 379, 381, 394, 395], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [396, 397, 398], "excluded_lines": [], "start_line": 364}, "get_experiment_variant": {"executed_lines": [409, 411, 412, 413, 414, 415, 417, 419, 420, 423, 424, 425, 441, 442], "summary": {"covered_lines": 14, "num_statements": 21, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [421, 428, 429, 431, 443, 444, 445], "excluded_lines": [], "start_line": 405}, "update_experiment_variant": {"executed_lines": [459, 461, 462, 463, 467, 469, 470, 473, 474, 478, 481, 490], "summary": {"covered_lines": 12, "num_statements": 22, "percent_covered": 54.54545454545455, "percent_covered_display": "55", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "55"}, "missing_lines": [464, 465, 471, 475, 479, 500, 501, 502, 503, 504], "excluded_lines": [], "start_line": 452}, "delete_experiment_variant": {"executed_lines": [512, 514, 515, 516, 520, 522, 523, 526, 527, 531, 534, 536], "summary": {"covered_lines": 12, "num_statements": 22, "percent_covered": 54.54545454545455, "percent_covered_display": "55", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "55"}, "missing_lines": [517, 518, 524, 528, 532, 537, 538, 539, 540, 541], "excluded_lines": [], "start_line": 508}, "create_experiment_result": {"executed_lines": [549, 551, 552, 553, 554, 555, 558, 559, 561, 564, 566, 568, 569, 570, 596, 597], "summary": {"covered_lines": 16, "num_statements": 21, "percent_covered": 76.19047619047619, "percent_covered_display": "76", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 76.19047619047619, "percent_statements_covered_display": "76"}, "missing_lines": [572, 584, 598, 599, 600], "excluded_lines": [], "start_line": 545}, "list_experiment_results": {"executed_lines": [612, 617, 618, 619, 620, 622, 623, 625, 626], "summary": {"covered_lines": 9, "num_statements": 16, "percent_covered": 56.25, "percent_covered_display": "56", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 56.25, "percent_statements_covered_display": "56"}, "missing_lines": [624, 628, 629, 633, 648, 649, 650], "excluded_lines": [], "start_line": 604}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 23, 24, 25, 26, 27, 29, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 88, 89, 90, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 116, 117, 154, 155, 194, 195, 227, 228, 289, 290, 314, 315, 360, 364, 401, 405, 448, 452, 507, 508, 544, 545, 603, 604], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExperimentCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "ExperimentUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ExperimentVariantCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "ExperimentVariantUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "ExperimentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "ExperimentVariantResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "ExperimentResultCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "ExperimentResultResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 22, 23, 24, 25, 26, 27, 29, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 73, 74, 75, 76, 77, 78, 79, 80, 81, 83, 88, 89, 90, 91, 92, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 116, 117, 119, 122, 123, 124, 128, 129, 138, 154, 155, 164, 167, 168, 169, 170, 172, 173, 175, 194, 195, 197, 199, 200, 201, 202, 204, 205, 206, 207, 209, 220, 221, 227, 228, 232, 234, 235, 236, 237, 240, 241, 242, 243, 249, 250, 251, 255, 256, 257, 258, 260, 271, 282, 283, 289, 290, 292, 294, 295, 296, 297, 299, 300, 301, 302, 304, 306, 307, 308, 314, 315, 321, 323, 324, 325, 326, 328, 330, 331, 332, 334, 343, 353, 354, 360, 364, 366, 368, 369, 370, 371, 373, 375, 376, 377, 379, 381, 394, 395, 401, 405, 409, 411, 412, 413, 414, 415, 417, 419, 420, 423, 424, 425, 441, 442, 448, 452, 459, 461, 462, 463, 467, 469, 470, 473, 474, 478, 481, 490, 507, 508, 512, 514, 515, 516, 520, 522, 523, 526, 527, 531, 534, 536, 544, 545, 549, 551, 552, 553, 554, 555, 558, 559, 561, 564, 566, 568, 569, 570, 596, 597, 603, 604, 612, 617, 618, 619, 620, 622, 623, 625, 626], "summary": {"covered_lines": 250, "num_statements": 310, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 80.64516129032258, "percent_statements_covered_display": "81"}, "missing_lines": [149, 150, 151, 189, 190, 191, 222, 223, 224, 284, 285, 286, 309, 310, 311, 355, 356, 357, 396, 397, 398, 421, 428, 429, 431, 443, 444, 445, 464, 465, 471, 475, 479, 500, 501, 502, 503, 504, 517, 518, 524, 528, 532, 537, 538, 539, 540, 541, 572, 584, 598, 599, 600, 624, 628, 629, 633, 648, 649, 650], "excluded_lines": [], "start_line": 1}}}, "src/api/feedback.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 22, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 91, 92, 94, 97, 98, 99, 100, 101, 104, 105, 106, 112, 119, 120, 121, 122, 125, 126, 127, 128, 129, 132, 133, 145, 161, 179, 180, 187, 192, 193, 194, 195, 197, 198, 203, 204, 206, 208, 232, 233, 242, 244, 247, 248, 250, 251, 254, 257, 260, 261, 262, 263, 264, 288, 289, 297, 298, 300, 301, 304, 307, 308, 310, 311, 312, 313, 314, 325, 326, 332, 333, 337, 340, 343, 344, 345, 346, 347, 400, 401, 403, 404, 407, 408, 412, 419, 420, 421, 451, 452, 463, 464, 465, 466, 467, 468, 469, 471, 487, 488, 489, 490, 491, 492, 493, 494, 495, 497, 500, 501, 502, 504, 512, 513, 514, 515, 516, 518, 521, 526, 530, 532, 534, 535, 536, 537, 539, 540, 541, 542, 545, 546, 551, 552, 558, 567, 568, 569, 571, 585, 586, 595, 597, 599, 600, 601, 602, 604, 605, 607, 608, 609, 612, 613, 615, 616, 617, 650, 651, 653, 655, 656, 657, 658, 660, 661, 662, 664, 665, 681, 684, 688, 690, 691, 693, 694, 698, 699, 700, 702, 703, 728, 729, 731, 733, 734, 735, 736, 738, 739, 740, 742, 743, 745, 746], "summary": {"covered_lines": 246, "num_statements": 351, "percent_covered": 70.08547008547009, "percent_covered_display": "70", "missing_lines": 105, "excluded_lines": 0, "percent_statements_covered": 70.08547008547009, "percent_statements_covered_display": "70"}, "missing_lines": [134, 136, 137, 138, 141, 142, 199, 200, 201, 258, 267, 268, 270, 272, 273, 275, 276, 278, 285, 286, 290, 291, 292, 294, 318, 319, 321, 323, 327, 328, 329, 341, 351, 352, 355, 362, 363, 368, 371, 375, 376, 379, 381, 383, 384, 390, 391, 392, 393, 394, 427, 430, 431, 433, 434, 435, 436, 437, 441, 442, 444, 447, 449, 453, 454, 455, 457, 547, 548, 549, 553, 554, 555, 556, 610, 611, 618, 619, 621, 622, 623, 625, 627, 628, 630, 631, 633, 647, 667, 695, 696, 705, 706, 707, 709, 710, 712, 714, 748, 749, 750, 752, 753, 755, 757], "excluded_lines": [], "functions": {"submit_feedback": {"executed_lines": [94, 97, 98, 99, 100, 101, 104, 105, 106, 112, 119, 120, 121, 122, 125, 126, 127, 128, 129, 132, 133, 145, 161], "summary": {"covered_lines": 23, "num_statements": 29, "percent_covered": 79.3103448275862, "percent_covered_display": "79", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 79.3103448275862, "percent_statements_covered_display": "79"}, "missing_lines": [134, 136, 137, 138, 141, 142], "excluded_lines": [], "start_line": 92}, "get_training_data": {"executed_lines": [187, 192, 193, 194, 195, 197, 198, 203, 204, 206, 208, 232, 233, 242, 244], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [199, 200, 201], "excluded_lines": [], "start_line": 180}, "trigger_rl_training": {"executed_lines": [250, 251, 254, 257, 260, 261, 262, 263, 264, 288, 289], "summary": {"covered_lines": 11, "num_statements": 26, "percent_covered": 42.30769230769231, "percent_covered_display": "42", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 42.30769230769231, "percent_statements_covered_display": "42"}, "missing_lines": [258, 267, 268, 270, 272, 273, 275, 276, 278, 285, 286, 290, 291, 292, 294], "excluded_lines": [], "start_line": 248}, "get_agent_performance": {"executed_lines": [300, 301, 304, 307, 308, 310, 311, 312, 313, 314, 325, 326], "summary": {"covered_lines": 12, "num_statements": 19, "percent_covered": 63.1578947368421, "percent_covered_display": "63", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 63.1578947368421, "percent_statements_covered_display": "63"}, "missing_lines": [318, 319, 321, 323, 327, 328, 329], "excluded_lines": [], "start_line": 298}, "get_specific_agent_performance": {"executed_lines": [337, 340, 343, 344, 345, 346, 347], "summary": {"covered_lines": 7, "num_statements": 26, "percent_covered": 26.923076923076923, "percent_covered_display": "27", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 26.923076923076923, "percent_statements_covered_display": "27"}, "missing_lines": [341, 351, 352, 355, 362, 363, 368, 371, 375, 376, 379, 381, 383, 384, 390, 391, 392, 393, 394], "excluded_lines": [], "start_line": 333}, "compare_agent_performance": {"executed_lines": [403, 404, 407, 408, 412, 419, 420, 421, 451, 452], "summary": {"covered_lines": 10, "num_statements": 27, "percent_covered": 37.03703703703704, "percent_covered_display": "37", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 37.03703703703704, "percent_statements_covered_display": "37"}, "missing_lines": [427, 430, 431, 433, 434, 435, 436, 437, 441, 442, 444, 447, 449, 453, 454, 455, 457], "excluded_lines": [], "start_line": 401}, "submit_correction": {"executed_lines": [530, 532, 534, 535, 536, 537, 539, 540, 541, 542, 545, 546, 551, 552, 558, 567, 568, 569, 571], "summary": {"covered_lines": 19, "num_statements": 26, "percent_covered": 73.07692307692308, "percent_covered_display": "73", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 73.07692307692308, "percent_statements_covered_display": "73"}, "missing_lines": [547, 548, 549, 553, 554, 555, 556], "excluded_lines": [], "start_line": 526}, "list_corrections": {"executed_lines": [595, 597, 599, 600, 601, 602, 604, 605, 607, 608, 609, 612, 613, 615, 616, 617], "summary": {"covered_lines": 16, "num_statements": 30, "percent_covered": 53.333333333333336, "percent_covered_display": "53", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 53.333333333333336, "percent_statements_covered_display": "53"}, "missing_lines": [610, 611, 618, 619, 621, 622, 623, 625, 627, 628, 630, 631, 633, 647], "excluded_lines": [], "start_line": 586}, "get_correction": {"executed_lines": [653, 655, 656, 657, 658, 660, 661, 662, 664, 665], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [667], "excluded_lines": [], "start_line": 651}, "review_correction": {"executed_lines": [688, 690, 691, 693, 694, 698, 699, 700, 702, 703], "summary": {"covered_lines": 10, "num_statements": 19, "percent_covered": 52.63157894736842, "percent_covered_display": "53", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 52.63157894736842, "percent_statements_covered_display": "53"}, "missing_lines": [695, 696, 705, 706, 707, 709, 710, 712, 714], "excluded_lines": [], "start_line": 684}, "apply_correction": {"executed_lines": [731, 733, 734, 735, 736, 738, 739, 740, 742, 743, 745, 746], "summary": {"covered_lines": 12, "num_statements": 19, "percent_covered": 63.1578947368421, "percent_covered_display": "63", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 63.1578947368421, "percent_statements_covered_display": "63"}, "missing_lines": [748, 749, 750, 752, 753, 755, 757], "excluded_lines": [], "start_line": 729}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 22, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 91, 92, 179, 180, 247, 248, 297, 298, 332, 333, 400, 401, 463, 464, 465, 466, 467, 468, 469, 471, 487, 488, 489, 490, 491, 492, 493, 494, 495, 497, 500, 501, 502, 504, 512, 513, 514, 515, 516, 518, 521, 526, 585, 586, 650, 651, 681, 684, 728, 729], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"FeedbackRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "FeedbackResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "TrainingDataResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "CorrectionSubmissionRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 463}, "CorrectionSubmissionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 487}, "CorrectionReviewRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 500}, "CorrectionListResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 512}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 22, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 40, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 91, 92, 94, 97, 98, 99, 100, 101, 104, 105, 106, 112, 119, 120, 121, 122, 125, 126, 127, 128, 129, 132, 133, 145, 161, 179, 180, 187, 192, 193, 194, 195, 197, 198, 203, 204, 206, 208, 232, 233, 242, 244, 247, 248, 250, 251, 254, 257, 260, 261, 262, 263, 264, 288, 289, 297, 298, 300, 301, 304, 307, 308, 310, 311, 312, 313, 314, 325, 326, 332, 333, 337, 340, 343, 344, 345, 346, 347, 400, 401, 403, 404, 407, 408, 412, 419, 420, 421, 451, 452, 463, 464, 465, 466, 467, 468, 469, 471, 487, 488, 489, 490, 491, 492, 493, 494, 495, 497, 500, 501, 502, 504, 512, 513, 514, 515, 516, 518, 521, 526, 530, 532, 534, 535, 536, 537, 539, 540, 541, 542, 545, 546, 551, 552, 558, 567, 568, 569, 571, 585, 586, 595, 597, 599, 600, 601, 602, 604, 605, 607, 608, 609, 612, 613, 615, 616, 617, 650, 651, 653, 655, 656, 657, 658, 660, 661, 662, 664, 665, 681, 684, 688, 690, 691, 693, 694, 698, 699, 700, 702, 703, 728, 729, 731, 733, 734, 735, 736, 738, 739, 740, 742, 743, 745, 746], "summary": {"covered_lines": 246, "num_statements": 351, "percent_covered": 70.08547008547009, "percent_covered_display": "70", "missing_lines": 105, "excluded_lines": 0, "percent_statements_covered": 70.08547008547009, "percent_statements_covered_display": "70"}, "missing_lines": [134, 136, 137, 138, 141, 142, 199, 200, 201, 258, 267, 268, 270, 272, 273, 275, 276, 278, 285, 286, 290, 291, 292, 294, 318, 319, 321, 323, 327, 328, 329, 341, 351, 352, 355, 362, 363, 368, 371, 375, 376, 379, 381, 383, 384, 390, 391, 392, 393, 394, 427, 430, 431, 433, 434, 435, 436, 437, 441, 442, 444, 447, 449, 453, 454, 455, 457, 547, 548, 549, 553, 554, 555, 556, 610, 611, 618, 619, 621, 622, 623, 625, 627, 628, 630, 631, 633, 647, 667, 695, 696, 705, 706, 707, 709, 710, 712, 714, 748, 749, 750, 752, 753, 755, 757], "excluded_lines": [], "start_line": 1}}}, "src/api/feedback_collection.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 21, 24, 27, 28, 29, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 53, 56, 57, 58, 59, 60, 61, 62, 63, 66, 69, 70, 71, 72, 73, 76, 77, 128, 129, 170, 171, 185, 187, 190, 192, 194, 204, 205, 231, 232, 247, 248], "summary": {"covered_lines": 59, "num_statements": 84, "percent_covered": 70.23809523809524, "percent_covered_display": "70", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 70.23809523809524, "percent_statements_covered_display": "70"}, "missing_lines": [91, 97, 99, 100, 106, 109, 110, 117, 121, 140, 146, 148, 149, 155, 156, 163, 219, 221, 223, 244, 259, 265, 267, 268, 274], "excluded_lines": [], "functions": {"submit_feedback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [91, 97, 99, 100, 106, 109, 110, 117, 121], "excluded_lines": [], "start_line": 77}, "rate_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [140, 146, 148, 149, 155, 156, 163], "excluded_lines": [], "start_line": 129}, "submit_bug_report": {"executed_lines": [185, 187, 190, 192, 194], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "submit_feature_request": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [219, 221, 223], "excluded_lines": [], "start_line": 205}, "get_my_feedback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [244], "excluded_lines": [], "start_line": 232}, "get_conversion_feedback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [259, 265, 267, 268, 274], "excluded_lines": [], "start_line": 248}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 21, 24, 27, 28, 29, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 53, 56, 57, 58, 59, 60, 61, 62, 63, 66, 69, 70, 71, 72, 73, 76, 77, 128, 129, 170, 171, 204, 205, 231, 232, 247, 248], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"FeedbackSubmitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "FeedbackSubmitResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ConversionRatingRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "BugReportRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "FeatureRequestRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 21, 24, 27, 28, 29, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 53, 56, 57, 58, 59, 60, 61, 62, 63, 66, 69, 70, 71, 72, 73, 76, 77, 128, 129, 170, 171, 185, 187, 190, 192, 194, 204, 205, 231, 232, 247, 248], "summary": {"covered_lines": 59, "num_statements": 84, "percent_covered": 70.23809523809524, "percent_covered_display": "70", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 70.23809523809524, "percent_statements_covered_display": "70"}, "missing_lines": [91, 97, 99, 100, 106, 109, 110, 117, 121, 140, 146, 148, 149, 155, 156, 163, 219, 221, 223, 244, 259, 265, 267, 268, 274], "excluded_lines": [], "start_line": 1}}}, "src/api/health.py": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 20, 22, 24, 27, 30, 31, 32, 35, 38, 39, 40, 41, 45, 48, 81, 120, 121, 171, 172, 197, 198], "summary": {"covered_lines": 28, "num_statements": 65, "percent_covered": 43.07692307692308, "percent_covered_display": "43", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 43.07692307692308, "percent_statements_covered_display": "43"}, "missing_lines": [52, 54, 55, 57, 58, 59, 61, 63, 69, 70, 71, 73, 85, 87, 89, 90, 98, 100, 102, 108, 109, 110, 112, 132, 135, 136, 139, 140, 143, 145, 147, 148, 151, 153, 155, 185, 205], "excluded_lines": [], "functions": {"check_database_health": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 54, 55, 57, 58, 59, 61, 63, 69, 70, 71, 73], "excluded_lines": [], "start_line": 48}, "check_redis_health": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85, 87, 89, 90, 98, 100, 102, 108, 109, 110, 112], "excluded_lines": [], "start_line": 81}, "readiness_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [132, 135, 136, 139, 140, 143, 145, 147, 148, 151, 153, 155], "excluded_lines": [], "start_line": 121}, "liveness_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [185], "excluded_lines": [], "start_line": 172}, "basic_health_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [205], "excluded_lines": [], "start_line": 198}, "": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 20, 22, 24, 27, 30, 31, 32, 35, 38, 39, 40, 41, 45, 48, 81, 120, 121, 171, 172, 197, 198], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"HealthStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "DependencyHealth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 20, 22, 24, 27, 30, 31, 32, 35, 38, 39, 40, 41, 45, 48, 81, 120, 121, 171, 172, 197, 198], "summary": {"covered_lines": 28, "num_statements": 65, "percent_covered": 43.07692307692308, "percent_covered_display": "43", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 43.07692307692308, "percent_statements_covered_display": "43"}, "missing_lines": [52, 54, 55, 57, 58, 59, 61, 63, 69, 70, 71, 73, 85, 87, 89, 90, 98, 100, 102, 108, 109, 110, 112, 132, 135, 136, 139, 140, 143, 145, 147, 148, 151, 153, 155, 185, 205], "excluded_lines": [], "start_line": 1}}}, "src/api/jobs.py": {"executed_lines": [11, 12, 13, 15, 23, 24, 25, 27, 28, 38, 41, 43, 49, 52, 55, 58, 61, 66, 69, 70, 71, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 99, 102, 103, 106, 109, 110, 116, 126, 127, 128, 130, 131, 133, 140, 141, 143, 150, 153, 161, 162, 176, 177, 178, 185, 192, 194, 200, 201, 215, 218, 235, 243, 244, 260, 262, 263, 268, 273, 288, 289, 306, 308, 314, 315, 320, 326, 328, 333, 337], "summary": {"covered_lines": 87, "num_statements": 94, "percent_covered": 92.55319148936171, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 92.55319148936171, "percent_statements_covered_display": "93"}, "missing_lines": [134, 144, 155, 269, 309, 321, 329], "excluded_lines": [], "functions": {"get_current_user_id": {"executed_lines": [126, 127, 128, 130, 131, 133, 140, 141, 143, 150], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [134, 144], "excluded_lines": [], "start_line": 116}, "get_job_manager_dep": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [155], "excluded_lines": [], "start_line": 153}, "create_job": {"executed_lines": [176, 177, 178, 185, 192, 194], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "list_jobs": {"executed_lines": [215, 218, 235], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "get_job": {"executed_lines": [260, 262, 263, 268, 273], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [269], "excluded_lines": [], "start_line": 244}, "cancel_job": {"executed_lines": [306, 308, 314, 315, 320, 326, 328, 333], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [309, 321, 329], "excluded_lines": [], "start_line": 289}, "": {"executed_lines": [11, 12, 13, 15, 23, 24, 25, 27, 28, 38, 41, 43, 49, 52, 55, 58, 61, 66, 69, 70, 71, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 99, 102, 103, 106, 109, 110, 116, 153, 161, 162, 200, 201, 243, 244, 288, 289, 337], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JobOptionsRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "JobCreateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "JobResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "JobListResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "JobCreateResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "JobDeleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "": {"executed_lines": [11, 12, 13, 15, 23, 24, 25, 27, 28, 38, 41, 43, 49, 52, 55, 58, 61, 66, 69, 70, 71, 74, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 90, 93, 94, 95, 96, 99, 102, 103, 106, 109, 110, 116, 126, 127, 128, 130, 131, 133, 140, 141, 143, 150, 153, 161, 162, 176, 177, 178, 185, 192, 194, 200, 201, 215, 218, 235, 243, 244, 260, 262, 263, 268, 273, 288, 289, 306, 308, 314, 315, 320, 326, 328, 333, 337], "summary": {"covered_lines": 87, "num_statements": 94, "percent_covered": 92.55319148936171, "percent_covered_display": "93", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 92.55319148936171, "percent_statements_covered_display": "93"}, "missing_lines": [134, 144, 155, 269, 309, 321, 329], "excluded_lines": [], "start_line": 1}}}, "src/api/knowledge_base.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 30, 33, 34, 35, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 82, 85, 86, 89, 92, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 114, 128, 147, 152, 206, 210, 230, 234, 284, 288, 336, 340, 351, 353, 356, 359, 367, 390, 393, 394, 395, 396, 399, 402, 403, 406, 420, 424, 443, 444, 446, 452, 473, 477, 493, 494, 495, 497, 502, 517, 521, 535, 536, 537, 539, 541, 556, 559, 560, 563, 566, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 582, 585, 586, 589, 592, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 608, 611, 612, 613, 614, 617, 620, 621, 622, 625, 628, 629, 632, 637, 712, 717, 800, 804, 866, 870], "summary": {"covered_lines": 150, "num_statements": 291, "percent_covered": 51.54639175257732, "percent_covered_display": "52", "missing_lines": 141, "excluded_lines": 0, "percent_statements_covered": 51.54639175257732, "percent_statements_covered_display": "52"}, "missing_lines": [64, 116, 120, 121, 123, 125, 130, 134, 135, 137, 139, 161, 163, 166, 176, 186, 191, 193, 194, 198, 199, 200, 219, 220, 221, 222, 223, 224, 245, 247, 250, 258, 259, 267, 269, 271, 272, 276, 277, 278, 299, 301, 304, 311, 317, 321, 323, 324, 328, 329, 330, 382, 383, 384, 408, 412, 413, 415, 417, 465, 466, 467, 509, 510, 511, 543, 544, 545, 657, 658, 660, 662, 665, 666, 667, 670, 671, 673, 674, 676, 677, 683, 685, 688, 690, 704, 705, 706, 736, 737, 738, 740, 742, 745, 748, 749, 750, 753, 754, 756, 757, 759, 760, 766, 768, 771, 773, 787, 788, 792, 793, 794, 817, 818, 819, 822, 823, 824, 825, 826, 827, 828, 829, 832, 839, 842, 844, 858, 859, 860, 889, 890, 893, 894, 895, 898, 901, 907, 912, 913, 914], "excluded_lines": [], "functions": {"PatternSubmissionResponse.from_orm": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64], "excluded_lines": [], "start_line": 62}, "_get_community_manager": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [116, 120, 121, 123, 125], "excluded_lines": [], "start_line": 114}, "_get_pattern_library": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [130, 134, 135, 137, 139], "excluded_lines": [], "start_line": 128}, "submit_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [161, 163, 166, 176, 186, 191, 193, 194, 198, 199, 200], "excluded_lines": [], "start_line": 152}, "get_pending_submissions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [219, 220, 221, 222, 223, 224], "excluded_lines": [], "start_line": 210}, "review_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [245, 247, 250, 258, 259, 267, 269, 271, 272, 276, 277, 278], "excluded_lines": [], "start_line": 234}, "vote_on_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [299, 301, 304, 311, 317, 321, 323, 324, 328, 329, 330], "excluded_lines": [], "start_line": 288}, "get_pattern_library": {"executed_lines": [351, 353, 356, 359, 367], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [382, 383, 384], "excluded_lines": [], "start_line": 340}, "_get_cross_reference_detector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [408, 412, 413, 415, 417], "excluded_lines": [], "start_line": 406}, "get_related_chunks": {"executed_lines": [443, 444, 446, 452], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [465, 466, 467], "excluded_lines": [], "start_line": 424}, "analyze_chunk_relationships": {"executed_lines": [493, 494, 495, 497, 502], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [509, 510, 511], "excluded_lines": [], "start_line": 477}, "build_concept_graph": {"executed_lines": [535, 536, 537, 539, 541], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [543, 544, 545], "excluded_lines": [], "start_line": 521}, "upload_texture_asset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [657, 658, 660, 662, 665, 666, 667, 670, 671, 673, 674, 676, 677, 683, 685, 688, 690, 704, 705, 706], "excluded_lines": [], "start_line": 637}, "upload_model_asset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [736, 737, 738, 740, 742, 745, 748, 749, 750, 753, 754, 756, 757, 759, 760, 766, 768, 771, 773, 787, 788, 792, 793, 794], "excluded_lines": [], "start_line": 717}, "search_multimodal": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [817, 818, 819, 822, 823, 824, 825, 826, 827, 828, 829, 832, 839, 842, 844, 858, 859, 860], "excluded_lines": [], "start_line": 804}, "get_related_across_modalities": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [889, 890, 893, 894, 895, 898, 901, 907, 912, 913, 914], "excluded_lines": [], "start_line": 870}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 30, 33, 34, 35, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 82, 85, 86, 89, 92, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 114, 128, 147, 152, 206, 210, 230, 234, 284, 288, 336, 340, 390, 393, 394, 395, 396, 399, 402, 403, 406, 420, 424, 473, 477, 517, 521, 556, 559, 560, 563, 566, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 582, 585, 586, 589, 592, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 608, 611, 612, 613, 614, 617, 620, 621, 622, 625, 628, 629, 632, 637, 712, 717, 800, 804, 866, 870], "summary": {"covered_lines": 131, "num_statements": 131, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PatternSubmitRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "PatternSubmissionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64], "excluded_lines": [], "start_line": 43}, "PatternReviewRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "PatternVoteRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ConversionPatternResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "RelatedChunkResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 390}, "RelatedChunksResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399}, "TextureUploadRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 556}, "TextureMetadataResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566}, "ModelUploadRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 582}, "ModelMetadataResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 592}, "MultimodalSearchRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 608}, "MultimodalSearchResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617}, "RelatedModalResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 30, 33, 34, 35, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 82, 85, 86, 89, 92, 95, 98, 99, 100, 101, 102, 103, 104, 105, 106, 114, 128, 147, 152, 206, 210, 230, 234, 284, 288, 336, 340, 351, 353, 356, 359, 367, 390, 393, 394, 395, 396, 399, 402, 403, 406, 420, 424, 443, 444, 446, 452, 473, 477, 493, 494, 495, 497, 502, 517, 521, 535, 536, 537, 539, 541, 556, 559, 560, 563, 566, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 582, 585, 586, 589, 592, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 608, 611, 612, 613, 614, 617, 620, 621, 622, 625, 628, 629, 632, 637, 712, 717, 800, 804, 866, 870], "summary": {"covered_lines": 150, "num_statements": 290, "percent_covered": 51.724137931034484, "percent_covered_display": "52", "missing_lines": 140, "excluded_lines": 0, "percent_statements_covered": 51.724137931034484, "percent_statements_covered_display": "52"}, "missing_lines": [116, 120, 121, 123, 125, 130, 134, 135, 137, 139, 161, 163, 166, 176, 186, 191, 193, 194, 198, 199, 200, 219, 220, 221, 222, 223, 224, 245, 247, 250, 258, 259, 267, 269, 271, 272, 276, 277, 278, 299, 301, 304, 311, 317, 321, 323, 324, 328, 329, 330, 382, 383, 384, 408, 412, 413, 415, 417, 465, 466, 467, 509, 510, 511, 543, 544, 545, 657, 658, 660, 662, 665, 666, 667, 670, 671, 673, 674, 676, 677, 683, 685, 688, 690, 704, 705, 706, 736, 737, 738, 740, 742, 745, 748, 749, 750, 753, 754, 756, 757, 759, 760, 766, 768, 771, 773, 787, 788, 792, 793, 794, 817, 818, 819, 822, 823, 824, 825, 826, 827, 828, 829, 832, 839, 842, 844, 858, 859, 860, 889, 890, 893, 894, 895, 898, 901, 907, 912, 913, 914], "excluded_lines": [], "start_line": 1}}}, "src/api/mod_imports.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 24, 26, 32, 35, 36, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 90, 93, 94, 97, 100, 101, 102, 103, 109, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 143, 144, 145, 146, 147, 154, 162, 164, 165, 167, 183, 185, 201, 203, 216, 218, 219, 221, 237, 238, 244, 245, 248, 249, 265, 267, 268, 270, 271, 272, 280, 281, 282, 283, 286, 295, 296, 297, 298, 307, 308, 315, 317, 320, 321, 322, 323, 324, 327, 328, 337, 338, 346, 348, 351, 352, 353, 354, 356, 357, 358, 359, 362, 366, 367, 368, 369, 378, 379, 385, 388, 390, 391, 395, 397, 399, 400, 407, 408, 411, 412, 415, 416, 423, 424, 427, 451, 457, 458, 459, 460, 462, 463, 476, 477, 478, 483, 484, 488, 490, 491, 493, 494, 495, 496, 499, 500, 509, 510, 514, 515, 516], "summary": {"covered_lines": 184, "num_statements": 223, "percent_covered": 82.51121076233184, "percent_covered_display": "83", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 82.51121076233184, "percent_statements_covered_display": "83"}, "missing_lines": [300, 301, 302, 304, 318, 330, 331, 332, 334, 349, 371, 372, 373, 375, 401, 417, 430, 433, 434, 437, 438, 439, 445, 446, 449, 452, 464, 465, 466, 467, 469, 502, 503, 504, 506, 517, 518, 519, 521], "excluded_lines": [], "functions": {"parse_mod_url": {"executed_lines": [118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 143, 144, 145, 146, 147, 154], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "transform_curseforge_mod": {"executed_lines": [164, 165, 167], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "transform_modrinth_mod": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "transform_curseforge_file": {"executed_lines": [203], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "transform_modrinth_version": {"executed_lines": [218, 219, 221], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "parse_url": {"executed_lines": [244, 245], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "search_mods": {"executed_lines": [265, 267, 268, 270, 271, 272, 280, 281, 282, 283, 286, 295, 296, 297, 298], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79"}, "missing_lines": [300, 301, 302, 304], "excluded_lines": [], "start_line": 249}, "get_mod_info": {"executed_lines": [315, 317, 320, 321, 322, 323, 324, 327, 328], "summary": {"covered_lines": 9, "num_statements": 14, "percent_covered": 64.28571428571429, "percent_covered_display": "64", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 64.28571428571429, "percent_statements_covered_display": "64"}, "missing_lines": [318, 330, 331, 332, 334], "excluded_lines": [], "start_line": 308}, "get_mod_files": {"executed_lines": [346, 348, 351, 352, 353, 354, 356, 357, 358, 359, 362, 366, 367, 368, 369], "summary": {"covered_lines": 15, "num_statements": 20, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [349, 371, 372, 373, 375], "excluded_lines": [], "start_line": 338}, "import_mod": {"executed_lines": [385, 388, 390, 391, 395, 397, 399, 400, 407, 408, 411, 412, 415, 416, 423, 424, 427, 451, 457, 458, 459, 460, 462, 463, 476, 477, 478], "summary": {"covered_lines": 27, "num_statements": 44, "percent_covered": 61.36363636363637, "percent_covered_display": "61", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 61.36363636363637, "percent_statements_covered_display": "61"}, "missing_lines": [401, 417, 430, 433, 434, 437, 438, 439, 445, 446, 449, 452, 464, 465, 466, 467, 469], "excluded_lines": [], "start_line": 379}, "get_categories": {"executed_lines": [488, 490, 491, 493, 494, 495, 496, 499, 500], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [502, 503, 504, 506], "excluded_lines": [], "start_line": 484}, "get_loaders": {"executed_lines": [514, 515, 516], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [517, 518, 519, 521], "excluded_lines": [], "start_line": 510}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 24, 26, 32, 35, 36, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 90, 93, 94, 97, 100, 101, 102, 103, 109, 162, 183, 201, 216, 237, 238, 248, 249, 307, 308, 337, 338, 378, 379, 483, 484, 509, 510], "summary": {"covered_lines": 79, "num_statements": 79, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModSearchRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "ModInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "ModFile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "URLParseResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "ImportRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "ImportResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 24, 26, 32, 35, 36, 37, 40, 43, 44, 45, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 90, 93, 94, 97, 100, 101, 102, 103, 109, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 143, 144, 145, 146, 147, 154, 162, 164, 165, 167, 183, 185, 201, 203, 216, 218, 219, 221, 237, 238, 244, 245, 248, 249, 265, 267, 268, 270, 271, 272, 280, 281, 282, 283, 286, 295, 296, 297, 298, 307, 308, 315, 317, 320, 321, 322, 323, 324, 327, 328, 337, 338, 346, 348, 351, 352, 353, 354, 356, 357, 358, 359, 362, 366, 367, 368, 369, 378, 379, 385, 388, 390, 391, 395, 397, 399, 400, 407, 408, 411, 412, 415, 416, 423, 424, 427, 451, 457, 458, 459, 460, 462, 463, 476, 477, 478, 483, 484, 488, 490, 491, 493, 494, 495, 496, 499, 500, 509, 510, 514, 515, 516], "summary": {"covered_lines": 184, "num_statements": 223, "percent_covered": 82.51121076233184, "percent_covered_display": "83", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 82.51121076233184, "percent_statements_covered_display": "83"}, "missing_lines": [300, 301, 302, 304, 318, 330, 331, 332, 334, 349, 371, 372, 373, 375, 401, 417, 430, 433, 434, 437, 438, 439, 445, 446, 449, 452, 464, 465, 466, 467, 469, 502, 503, 504, 506, 517, 518, 519, 521], "excluded_lines": [], "start_line": 1}}}, "src/api/mode_classification.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [13, 14, 15, 16, 18, 25, 28, 30, 33, 40, 54, 56, 59, 64, 67, 70, 72, 84, 85, 86, 90, 91, 92, 98, 105, 115, 116, 117, 123, 126, 129, 131, 143, 144, 145, 146, 147, 153, 159, 168, 211, 214, 220, 233, 234, 237, 243, 257], "excluded_lines": [], "functions": {"classify_mod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [54, 56, 59, 64, 67, 70, 72, 84, 85, 86, 90, 91, 92], "excluded_lines": [], "start_line": 40}, "classify_from_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [115, 116, 117, 123, 126, 129, 131, 143, 144, 145, 146, 147], "excluded_lines": [], "start_line": 105}, "get_modes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [168, 211], "excluded_lines": [], "start_line": 159}, "get_pipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [233, 234], "excluded_lines": [], "start_line": 220}, "get_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [257], "excluded_lines": [], "start_line": 243}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [13, 14, 15, 16, 18, 25, 28, 30, 33, 40, 98, 105, 153, 159, 214, 220, 237, 243], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [13, 14, 15, 16, 18, 25, 28, 30, 33, 40, 54, 56, 59, 64, 67, 70, 72, 84, 85, 86, 90, 91, 92, 98, 105, 115, 116, 117, 123, 126, 129, 131, 143, 144, 145, 146, 147, 153, 159, 168, 211, 214, 220, 233, 234, 237, 243, 257], "excluded_lines": [], "start_line": 1}}}, "src/api/performance.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 20, 22, 23, 26, 27, 28, 39, 53, 54, 75, 78, 81, 83, 92, 93, 94, 95, 97, 99, 107, 108, 109, 111, 123, 144, 149, 166, 186, 196, 204, 205, 208, 209, 237, 238, 277, 278, 312, 313, 330, 331, 351, 352], "summary": {"covered_lines": 51, "num_statements": 116, "percent_covered": 43.96551724137931, "percent_covered_display": "44", "missing_lines": 65, "excluded_lines": 0, "percent_statements_covered": 43.96551724137931, "percent_statements_covered_display": "44"}, "missing_lines": [40, 41, 42, 43, 44, 45, 46, 49, 50, 51, 210, 211, 215, 216, 226, 230, 239, 240, 241, 243, 244, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 268, 279, 280, 281, 283, 284, 294, 295, 296, 301, 314, 315, 316, 327, 332, 334, 346, 348, 353, 354, 355, 356, 357, 370, 371], "excluded_lines": [], "functions": {"load_scenarios_from_files": {"executed_lines": [27, 28, 39, 53, 54, 75], "summary": {"covered_lines": 6, "num_statements": 16, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 37.5, "percent_statements_covered_display": "38"}, "missing_lines": [40, 41, 42, 43, 44, 45, 46, 49, 50, 51], "excluded_lines": [], "start_line": 26}, "simulate_benchmark_execution": {"executed_lines": [83, 92, 93, 94, 95, 97, 99, 107, 108, 109, 111, 123, 144, 149, 166, 186, 196, 204, 205], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "run_benchmark_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [210, 211, 215, 216, 226, 230], "excluded_lines": [], "start_line": 209}, "get_benchmark_status_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239, 240, 241, 243, 244, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 268], "excluded_lines": [], "start_line": 238}, "get_benchmark_report_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [279, 280, 281, 283, 284, 294, 295, 296, 301], "excluded_lines": [], "start_line": 278}, "list_benchmark_scenarios_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [314, 315, 316, 327], "excluded_lines": [], "start_line": 313}, "create_custom_scenario_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [332, 334, 346, 348], "excluded_lines": [], "start_line": 331}, "get_benchmark_history_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [353, 354, 355, 356, 357, 370, 371], "excluded_lines": [], "start_line": 352}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 20, 22, 23, 26, 78, 81, 208, 209, 237, 238, 277, 278, 312, 313, 330, 331, 351, 352], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 20, 22, 23, 26, 27, 28, 39, 53, 54, 75, 78, 81, 83, 92, 93, 94, 95, 97, 99, 107, 108, 109, 111, 123, 144, 149, 166, 186, 196, 204, 205, 208, 209, 237, 238, 277, 278, 312, 313, 330, 331, 351, 352], "summary": {"covered_lines": 51, "num_statements": 116, "percent_covered": 43.96551724137931, "percent_covered_display": "44", "missing_lines": 65, "excluded_lines": 0, "percent_statements_covered": 43.96551724137931, "percent_statements_covered_display": "44"}, "missing_lines": [40, 41, 42, 43, 44, 45, 46, 49, 50, 51, 210, 211, 215, 216, 226, 230, 239, 240, 241, 243, 244, 245, 246, 248, 249, 250, 251, 253, 254, 255, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 268, 279, 280, 281, 283, 284, 294, 295, 296, 301, 314, 315, 316, 327, 332, 334, 346, 348, 353, 354, 355, 356, 357, 370, 371], "excluded_lines": [], "start_line": 1}}}, "src/api/qa.py": {"executed_lines": [2, 3, 4, 5, 7, 12, 16, 19, 20, 22, 23, 24, 25, 31, 45, 47, 48, 49, 54, 56, 69, 73, 81, 92, 93, 95, 96, 97, 100, 106, 107, 108, 128, 131, 134, 146, 149, 151, 155, 156, 159, 166, 194, 195, 196, 197, 198, 199, 205, 208, 214, 228, 232, 233, 234, 235, 236, 237, 238, 240, 241, 245, 247, 248, 252], "summary": {"covered_lines": 65, "num_statements": 110, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 59.09090909090909, "percent_statements_covered_display": "59"}, "missing_lines": [101, 102, 103, 104, 109, 110, 111, 117, 118, 119, 121, 122, 125, 126, 152, 153, 253, 259, 262, 263, 265, 266, 267, 269, 271, 272, 273, 277, 278, 282, 285, 287, 289, 293, 294, 295, 297, 298, 299, 300, 302, 305, 306, 307, 310], "excluded_lines": [], "functions": {"_validate_conversion_id": {"executed_lines": [19, 20, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "start_qa_task": {"executed_lines": [45, 47, 48, 49, 54, 56, 69, 73], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "get_qa_status": {"executed_lines": [92, 93, 95, 96, 97, 100, 106, 107, 108, 128, 131], "summary": {"covered_lines": 11, "num_statements": 25, "percent_covered": 44.0, "percent_covered_display": "44", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 44.0, "percent_statements_covered_display": "44"}, "missing_lines": [101, 102, 103, 104, 109, 110, 111, 117, 118, 119, 121, 122, 125, 126], "excluded_lines": [], "start_line": 81}, "get_qa_report": {"executed_lines": [146, 149, 151, 155, 156, 159, 166, 194, 195, 196, 197, 198, 199, 205, 208], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [152, 153], "excluded_lines": [], "start_line": 134}, "list_qa_tasks": {"executed_lines": [228, 232, 233, 234, 235, 236, 237, 238, 240, 241, 245, 247, 248], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "": {"executed_lines": [2, 3, 4, 5, 7, 12, 16, 31, 81, 134, 214, 252], "summary": {"covered_lines": 12, "num_statements": 41, "percent_covered": 29.26829268292683, "percent_covered_display": "29", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 29.26829268292683, "percent_statements_covered_display": "29"}, "missing_lines": [253, 259, 262, 263, 265, 266, 267, 269, 271, 272, 273, 277, 278, 282, 285, 287, 289, 293, 294, 295, 297, 298, 299, 300, 302, 305, 306, 307, 310], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 7, 12, 16, 19, 20, 22, 23, 24, 25, 31, 45, 47, 48, 49, 54, 56, 69, 73, 81, 92, 93, 95, 96, 97, 100, 106, 107, 108, 128, 131, 134, 146, 149, 151, 155, 156, 159, 166, 194, 195, 196, 197, 198, 199, 205, 208, 214, 228, 232, 233, 234, 235, 236, 237, 238, 240, 241, 245, 247, 248, 252], "summary": {"covered_lines": 65, "num_statements": 110, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 59.09090909090909, "percent_statements_covered_display": "59"}, "missing_lines": [101, 102, 103, 104, 109, 110, 111, 117, 118, 119, 121, 122, 125, 126, 152, 153, 253, 259, 262, 263, 265, 266, 267, 269, 271, 272, 273, 277, 278, 282, 285, 287, 289, 293, 294, 295, 297, 298, 299, 300, 302, 305, 306, 307, 310], "excluded_lines": [], "start_line": 1}}}, "src/api/query_monitoring.py": {"executed_lines": [17, 18, 19, 20, 21, 23, 30, 32, 36, 38, 39, 40, 41, 44, 46, 47, 48, 49, 50, 53, 54, 72, 73, 93, 94, 112, 113, 131, 132, 147, 148, 159, 160, 171, 172], "summary": {"covered_lines": 35, "num_statements": 82, "percent_covered": 42.68292682926829, "percent_covered_display": "43", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 42.68292682926829, "percent_statements_covered_display": "43"}, "missing_lines": [64, 65, 66, 67, 69, 79, 80, 81, 85, 86, 88, 98, 99, 100, 104, 105, 107, 117, 118, 119, 123, 124, 126, 138, 139, 140, 141, 142, 144, 150, 151, 152, 153, 154, 156, 162, 163, 164, 165, 166, 168, 174, 175, 176, 177, 178, 180], "excluded_lines": [], "functions": {"get_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64, 65, 66, 67, 69], "excluded_lines": [], "start_line": 54}, "get_n_plus_one_candidates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [79, 80, 81, 85, 86, 88], "excluded_lines": [], "start_line": 73}, "get_slowest_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98, 99, 100, 104, 105, 107], "excluded_lines": [], "start_line": 94}, "get_most_executed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 118, 119, 123, 124, 126], "excluded_lines": [], "start_line": 113}, "reset_monitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [138, 139, 140, 141, 142, 144], "excluded_lines": [], "start_line": 132}, "enable_monitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150, 151, 152, 153, 154, 156], "excluded_lines": [], "start_line": 148}, "disable_monitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [162, 163, 164, 165, 166, 168], "excluded_lines": [], "start_line": 160}, "get_summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [174, 175, 176, 177, 178, 180], "excluded_lines": [], "start_line": 172}, "": {"executed_lines": [17, 18, 19, 20, 21, 23, 30, 32, 36, 38, 39, 40, 41, 44, 46, 47, 48, 49, 50, 53, 54, 72, 73, 93, 94, 112, 113, 131, 132, 147, 148, 159, 160, 171, 172], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QueryStatsResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "SlowQueryResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [17, 18, 19, 20, 21, 23, 30, 32, 36, 38, 39, 40, 41, 44, 46, 47, 48, 49, 50, 53, 54, 72, 73, 93, 94, 112, 113, 131, 132, 147, 148, 159, 160, 171, 172], "summary": {"covered_lines": 35, "num_statements": 82, "percent_covered": 42.68292682926829, "percent_covered_display": "43", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 42.68292682926829, "percent_statements_covered_display": "43"}, "missing_lines": [64, 65, 66, 67, 69, 79, 80, 81, 85, 86, 88, 98, 99, 100, 104, 105, 107, 117, 118, 119, 123, 124, 126, 138, 139, 140, 141, 142, 144, 150, 151, 152, 153, 154, 156, 162, 163, 164, 165, 166, 168, 174, 175, 176, 177, 178, 180], "excluded_lines": [], "start_line": 1}}}, "src/api/rag.py": {"executed_lines": [8, 9, 10, 12, 13, 15, 16, 19, 22, 23, 24, 25, 26, 29, 30, 33, 36, 37, 38, 39, 40, 41, 44, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 64, 65, 144, 145], "summary": {"covered_lines": 38, "num_statements": 59, "percent_covered": 64.40677966101696, "percent_covered_display": "64", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 64.40677966101696, "percent_statements_covered_display": "64"}, "missing_lines": [76, 77, 78, 80, 81, 82, 84, 86, 97, 99, 101, 102, 103, 114, 132, 133, 134, 137, 138, 139, 147], "excluded_lines": [], "functions": {"rag_search": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76, 77, 78, 80, 81, 82, 84, 86, 97, 99, 101, 102, 103, 114, 132, 133, 134, 137, 138, 139], "excluded_lines": [], "start_line": 65}, "rag_health": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [147], "excluded_lines": [], "start_line": 145}, "": {"executed_lines": [8, 9, 10, 12, 13, 15, 16, 19, 22, 23, 24, 25, 26, 29, 30, 33, 36, 37, 38, 39, 40, 41, 44, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 64, 65, 144, 145], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RAGSearchRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "SearchResultItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "QueryAnalysisResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "RAGSearchResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [8, 9, 10, 12, 13, 15, 16, 19, 22, 23, 24, 25, 26, 29, 30, 33, 36, 37, 38, 39, 40, 41, 44, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 64, 65, 144, 145], "summary": {"covered_lines": 38, "num_statements": 59, "percent_covered": 64.40677966101696, "percent_covered_display": "64", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 64.40677966101696, "percent_statements_covered_display": "64"}, "missing_lines": [76, 77, 78, 80, 81, 82, 84, 86, 97, 99, 101, 102, 103, 114, 132, 133, 134, 137, 138, 139, 147], "excluded_lines": [], "start_line": 1}}}, "src/api/rate_limit_dashboard.py": {"executed_lines": [9, 10, 11, 12, 13, 15, 16, 20, 22, 25, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 43, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 69, 122, 123, 131, 134, 137, 140, 145, 148, 155, 158, 159, 164, 174, 175, 176, 177, 178, 179, 181, 192, 195, 202, 208, 217, 218, 222, 224, 227, 230, 234, 236, 243, 245, 246, 250, 260, 261, 265, 267, 272, 274, 275, 276, 277, 278, 279, 281, 291, 294, 295, 302, 304, 306, 309, 310, 311, 314, 316, 318, 332, 333, 336, 337, 346, 349, 350, 351, 352, 353, 356, 357, 361, 363, 368, 377, 380, 381, 382, 385, 386, 393, 395, 396, 397, 398, 399, 400, 402], "summary": {"covered_lines": 126, "num_statements": 173, "percent_covered": 72.83236994219654, "percent_covered_display": "73", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 72.83236994219654, "percent_statements_covered_display": "73"}, "missing_lines": [71, 73, 75, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 119, 160, 161, 247, 248, 341, 343], "excluded_lines": [], "functions": {"_get_prometheus_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 41, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 41, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [71, 73, 75, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 119], "excluded_lines": [], "start_line": 69}, "get_rate_limit_dashboard": {"executed_lines": [131, 134, 137, 140, 145, 148, 155, 158, 159, 164, 174, 175, 176, 177, 178, 179, 181, 192, 195, 202, 208], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [160, 161], "excluded_lines": [], "start_line": 123}, "get_rate_limit_summary": {"executed_lines": [222, 224, 227, 230, 234, 236, 243, 245, 246, 250], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [247, 248], "excluded_lines": [], "start_line": 218}, "get_endpoint_stats": {"executed_lines": [265, 267, 272, 274, 275, 276, 277, 278, 279, 281, 291], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "get_client_stats": {"executed_lines": [302, 304, 306, 309, 310, 311, 314, 316, 318, 332, 333], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "get_rate_limit_prometheus_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [341, 343], "excluded_lines": [], "start_line": 337}, "get_rate_limit_config": {"executed_lines": [361, 363, 368], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 357}, "update_rate_limit_config": {"executed_lines": [393, 395, 396, 397, 398, 399, 400, 402], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386}, "": {"executed_lines": [9, 10, 11, 12, 13, 15, 16, 20, 22, 25, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 43, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 69, 122, 123, 217, 218, 260, 261, 294, 295, 336, 337, 346, 349, 350, 351, 352, 353, 356, 357, 377, 380, 381, 382, 385, 386], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RateLimitSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "EndpointStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "ClientStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "DashboardStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "ConfigInfo": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "ConfigUpdateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "": {"executed_lines": [9, 10, 11, 12, 13, 15, 16, 20, 22, 25, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 43, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 62, 63, 64, 65, 66, 69, 122, 123, 131, 134, 137, 140, 145, 148, 155, 158, 159, 164, 174, 175, 176, 177, 178, 179, 181, 192, 195, 202, 208, 217, 218, 222, 224, 227, 230, 234, 236, 243, 245, 246, 250, 260, 261, 265, 267, 272, 274, 275, 276, 277, 278, 279, 281, 291, 294, 295, 302, 304, 306, 309, 310, 311, 314, 316, 318, 332, 333, 336, 337, 346, 349, 350, 351, 352, 353, 356, 357, 361, 363, 368, 377, 380, 381, 382, 385, 386, 393, 395, 396, 397, 398, 399, 400, 402], "summary": {"covered_lines": 126, "num_statements": 173, "percent_covered": 72.83236994219654, "percent_covered_display": "73", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 72.83236994219654, "percent_statements_covered_display": "73"}, "missing_lines": [71, 73, 75, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 119, 160, 161, 247, 248, 341, 343], "excluded_lines": [], "start_line": 1}}}, "src/api/task_queue.py": {"executed_lines": [8, 9, 10, 11, 21, 25, 28, 29, 30, 33, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 52, 55, 56, 57, 60, 62, 68, 72, 73, 101, 102, 132, 133, 154, 155, 195, 196], "summary": {"covered_lines": 39, "num_statements": 62, "percent_covered": 62.903225806451616, "percent_covered_display": "63", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 62.903225806451616, "percent_statements_covered_display": "63"}, "missing_lines": [83, 84, 86, 88, 97, 98, 112, 114, 115, 117, 143, 145, 146, 151, 169, 170, 171, 172, 174, 175, 177, 203, 205], "excluded_lines": [], "functions": {"priority_string_to_enum": {"executed_lines": [62, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "create_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83, 84, 86, 88, 97, 98], "excluded_lines": [], "start_line": 73}, "get_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112, 114, 115, 117], "excluded_lines": [], "start_line": 102}, "cancel_task_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [143, 145, 146, 151], "excluded_lines": [], "start_line": 133}, "list_tasks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169, 170, 171, 172, 174, 175, 177], "excluded_lines": [], "start_line": 155}, "get_queue_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [203, 205], "excluded_lines": [], "start_line": 196}, "": {"executed_lines": [8, 9, 10, 11, 21, 25, 28, 29, 30, 33, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 52, 55, 56, 57, 60, 72, 73, 101, 102, 132, 133, 154, 155, 195, 196], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TaskEnqueueRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TaskResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "QueueStatsResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "": {"executed_lines": [8, 9, 10, 11, 21, 25, 28, 29, 30, 33, 36, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 52, 55, 56, 57, 60, 62, 68, 72, 73, 101, 102, 132, 133, 154, 155, 195, 196], "summary": {"covered_lines": 39, "num_statements": 62, "percent_covered": 62.903225806451616, "percent_covered_display": "63", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 62.903225806451616, "percent_statements_covered_display": "63"}, "missing_lines": [83, 84, 86, 88, 97, 98, 112, 114, 115, 117, 143, 145, 146, 151, 169, 170, 171, 172, 174, 175, 177, 203, 205], "excluded_lines": [], "start_line": 1}}}, "src/api/upload.py": {"executed_lines": [10, 11, 12, 13, 14, 16, 26, 27, 29, 30, 31, 33, 35, 38, 39, 43, 46, 47, 48, 49, 52, 55, 56, 57, 58, 61, 64, 65, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 87, 90, 114, 115, 186, 187, 225, 226, 263, 264, 307, 308, 334, 335, 352], "summary": {"covered_lines": 53, "num_statements": 119, "percent_covered": 44.53781512605042, "percent_covered_display": "45", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 44.53781512605042, "percent_statements_covered_display": "45"}, "missing_lines": [92, 93, 99, 102, 103, 106, 108, 109, 111, 129, 131, 132, 137, 138, 141, 142, 144, 146, 147, 150, 151, 152, 158, 166, 167, 169, 171, 179, 180, 181, 182, 183, 198, 199, 204, 205, 208, 217, 239, 240, 244, 247, 250, 253, 255, 270, 271, 273, 276, 277, 278, 279, 282, 283, 284, 285, 288, 293, 296, 298, 321, 323, 324, 326, 346, 348], "excluded_lines": [], "functions": {"validate_file_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [92, 93, 99, 102, 103, 106, 108, 109, 111], "excluded_lines": [], "start_line": 90}, "upload_jar_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [129, 131, 132, 137, 138, 141, 142, 144, 146, 147, 150, 151, 152, 158, 166, 167, 169, 171, 179, 180, 181, 182, 183], "excluded_lines": [], "start_line": 115}, "init_chunked_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [198, 199, 204, 205, 208, 217], "excluded_lines": [], "start_line": 187}, "upload_chunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239, 240, 244, 247, 250, 253, 255], "excluded_lines": [], "start_line": 226}, "complete_chunked_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [270, 271, 273, 276, 277, 278, 279, 282, 283, 284, 285, 288, 293, 296, 298], "excluded_lines": [], "start_line": 264}, "get_upload_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [321, 323, 324, 326], "excluded_lines": [], "start_line": 308}, "cancel_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [346, 348], "excluded_lines": [], "start_line": 335}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 26, 27, 29, 30, 31, 33, 35, 38, 39, 43, 46, 47, 48, 49, 52, 55, 56, 57, 58, 61, 64, 65, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 87, 90, 114, 115, 186, 187, 225, 226, 263, 264, 307, 308, 334, 335, 352], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"UploadInitResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "ChunkUploadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "UploadCompleteResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "UploadStatusResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "UploadErrorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 26, 27, 29, 30, 31, 33, 35, 38, 39, 43, 46, 47, 48, 49, 52, 55, 56, 57, 58, 61, 64, 65, 66, 67, 68, 71, 74, 75, 76, 77, 80, 83, 87, 90, 114, 115, 186, 187, 225, 226, 263, 264, 307, 308, 334, 335, 352], "summary": {"covered_lines": 53, "num_statements": 119, "percent_covered": 44.53781512605042, "percent_covered_display": "45", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 44.53781512605042, "percent_statements_covered_display": "45"}, "missing_lines": [92, 93, 99, 102, 103, 106, 108, 109, 111, 129, 131, 132, 137, 138, 141, 142, 144, 146, 147, 150, 151, 152, 158, 166, 167, 169, 171, 179, 180, 181, 182, 183, 198, 199, 204, 205, 208, 217, 239, 240, 244, 247, 250, 253, 255, 270, 271, 273, 276, 277, 278, 279, 282, 283, 284, 285, 288, 293, 296, 298, 321, 323, 324, 326, 346, 348], "excluded_lines": [], "start_line": 1}}}, "src/api/validation.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 27, 28, 36, 63, 122, 169, 220, 279, 306, 335, 336, 337, 338, 341, 344, 347, 352, 353, 354, 357, 358, 361, 362, 365, 368, 370, 371, 372, 373, 376, 380, 415, 416, 449, 450, 458, 459], "summary": {"covered_lines": 54, "num_statements": 266, "percent_covered": 20.30075187969925, "percent_covered_display": "20", "missing_lines": 212, "excluded_lines": 0, "percent_statements_covered": 20.30075187969925, "percent_statements_covered_display": "20"}, "missing_lines": [29, 37, 39, 40, 41, 42, 44, 48, 52, 64, 65, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 80, 81, 82, 83, 85, 86, 87, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 110, 111, 112, 114, 123, 124, 126, 127, 128, 130, 131, 138, 139, 141, 142, 143, 144, 145, 147, 148, 149, 150, 152, 153, 154, 155, 156, 158, 160, 170, 172, 173, 174, 175, 177, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 209, 211, 221, 223, 224, 225, 226, 228, 229, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 255, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 270, 272, 280, 281, 283, 284, 286, 288, 289, 291, 293, 294, 296, 303, 304, 307, 309, 310, 311, 312, 314, 315, 318, 319, 323, 324, 326, 327, 329, 330, 332, 377, 384, 385, 386, 387, 388, 390, 391, 399, 400, 402, 403, 405, 406, 407, 409, 410, 411, 412, 421, 422, 423, 424, 426, 433, 434, 436, 443, 446, 451, 452, 453, 454, 455, 460, 461, 462, 463, 464, 465, 470, 471, 472, 473, 478, 479, 480, 482], "excluded_lines": [], "functions": {"ValidationAgent.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29], "excluded_lines": [], "start_line": 28}, "ValidationAgent.validate_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 39, 40, 41, 42, 44, 48, 52], "excluded_lines": [], "start_line": 36}, "ValidationAgent._analyze_semantic_preservation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64, 65, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 80, 81, 82, 83, 85, 86, 87, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 110, 111, 112, 114], "excluded_lines": [], "start_line": 63}, "ValidationAgent._predict_behavior_differences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [123, 124, 126, 127, 128, 130, 131, 138, 139, 141, 142, 143, 144, 145, 147, 148, 149, 150, 152, 153, 154, 155, 156, 158, 160], "excluded_lines": [], "start_line": 122}, "ValidationAgent._validate_asset_integrity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [170, 172, 173, 174, 175, 177, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 209, 211], "excluded_lines": [], "start_line": 169}, "ValidationAgent._validate_manifest_structure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [221, 223, 224, 225, 226, 228, 229, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 255, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 270, 272], "excluded_lines": [], "start_line": 220}, "ValidationAgent._calculate_weighted_confidence": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [280, 281, 283, 284, 286, 288, 289, 291, 293, 294, 296, 303, 304], "excluded_lines": [], "start_line": 279}, "ValidationAgent._generate_recommendations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [307, 309, 310, 311, 312, 314, 315, 318, 319, 323, 324, 326, 327, 329, 330, 332], "excluded_lines": [], "start_line": 306}, "get_validation_agent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [377], "excluded_lines": [], "start_line": 376}, "process_validation_task": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [384, 385, 386, 387, 388, 390, 391, 399, 400, 402, 403, 405, 406, 407, 409, 410, 411, 412], "excluded_lines": [], "start_line": 380}, "start_validation_job": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [421, 422, 423, 424, 426, 433, 434, 436, 443, 446], "excluded_lines": [], "start_line": 416}, "get_validation_job_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [451, 452, 453, 454, 455], "excluded_lines": [], "start_line": 450}, "get_validation_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [460, 461, 462, 463, 464, 465, 470, 471, 472, 473, 478, 479, 480, 482], "excluded_lines": [], "start_line": 459}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 27, 28, 36, 63, 122, 169, 220, 279, 306, 335, 336, 337, 338, 341, 344, 347, 352, 353, 354, 357, 358, 361, 362, 365, 368, 370, 371, 372, 373, 376, 380, 415, 416, 449, 450, 458, 459], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ValidationReportModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "ValidationAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 164, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 37, 39, 40, 41, 42, 44, 48, 52, 64, 65, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 80, 81, 82, 83, 85, 86, 87, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 110, 111, 112, 114, 123, 124, 126, 127, 128, 130, 131, 138, 139, 141, 142, 143, 144, 145, 147, 148, 149, 150, 152, 153, 154, 155, 156, 158, 160, 170, 172, 173, 174, 175, 177, 179, 180, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 209, 211, 221, 223, 224, 225, 226, 228, 229, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 255, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 270, 272, 280, 281, 283, 284, 286, 288, 289, 291, 293, 294, 296, 303, 304, 307, 309, 310, 311, 312, 314, 315, 318, 319, 323, 324, 326, 327, 329, 330, 332], "excluded_lines": [], "start_line": 27}, "ValidationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "ValidationJob": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "ValidationReportResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 361}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 19, 20, 21, 24, 27, 28, 36, 63, 122, 169, 220, 279, 306, 335, 336, 337, 338, 341, 344, 347, 352, 353, 354, 357, 358, 361, 362, 365, 368, 370, 371, 372, 373, 376, 380, 415, 416, 449, 450, 458, 459], "summary": {"covered_lines": 54, "num_statements": 102, "percent_covered": 52.94117647058823, "percent_covered_display": "53", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 52.94117647058823, "percent_statements_covered_display": "53"}, "missing_lines": [377, 384, 385, 386, 387, 388, 390, 391, 399, 400, 402, 403, 405, 406, 407, 409, 410, 411, 412, 421, 422, 423, 424, 426, 433, 434, 436, 443, 446, 451, 452, 453, 454, 455, 460, 461, 462, 463, 464, 465, 470, 471, 472, 473, 478, 479, 480, 482], "excluded_lines": [], "start_line": 1}}}, "src/api/validation_constants.py": {"executed_lines": [2, 5, 8, 9, 10, 11, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [2, 5, 8, 9, 10, 11, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ValidationJobStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "ValidationMessages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [2, 5, 8, 9, 10, 11, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/api/visual_editor.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 16, 18, 21, 24, 27, 30, 31, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 51, 54, 57, 58, 59, 62, 65, 66, 67, 70, 73, 74, 75, 78, 79, 120, 121, 169, 170, 207, 208, 288, 289, 325, 326], "summary": {"covered_lines": 50, "num_statements": 93, "percent_covered": 53.763440860215056, "percent_covered_display": "54", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 53.763440860215056, "percent_statements_covered_display": "54"}, "missing_lines": [92, 98, 100, 101, 107, 109, 134, 137, 138, 146, 147, 149, 150, 151, 152, 159, 161, 184, 202, 204, 220, 269, 270, 271, 277, 278, 279, 281, 295, 322, 338, 344, 345, 348, 349, 350, 351, 358, 359, 368, 369, 370, 378], "excluded_lines": [], "functions": {"create_editor_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [92, 98, 100, 101, 107, 109], "excluded_lines": [], "start_line": 79}, "edit_code": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [134, 137, 138, 146, 147, 149, 150, 151, 152, 159, 161], "excluded_lines": [], "start_line": 121}, "get_ai_suggestion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [184, 202, 204], "excluded_lines": [], "start_line": 170}, "apply_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [220, 269, 270, 271, 277, 278, 279, 281], "excluded_lines": [], "start_line": 208}, "list_templates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [295, 322], "excluded_lines": [], "start_line": 289}, "compare_versions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [338, 344, 345, 348, 349, 350, 351, 358, 359, 368, 369, 370, 378], "excluded_lines": [], "start_line": 326}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 16, 18, 21, 24, 27, 30, 31, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 51, 54, 57, 58, 59, 62, 65, 66, 67, 70, 73, 74, 75, 78, 79, 120, 121, 169, 170, 207, 208, 288, 289, 325, 326], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EditorSessionRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "EditorSessionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "CodeEditRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "CodeEditResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "AISuggestionRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "AISuggestionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "TemplateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 14, 16, 18, 21, 24, 27, 30, 31, 32, 33, 34, 37, 40, 41, 42, 45, 48, 49, 50, 51, 54, 57, 58, 59, 62, 65, 66, 67, 70, 73, 74, 75, 78, 79, 120, 121, 169, 170, 207, 208, 288, 289, 325, 326], "summary": {"covered_lines": 50, "num_statements": 93, "percent_covered": 53.763440860215056, "percent_covered_display": "54", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 53.763440860215056, "percent_statements_covered_display": "54"}, "missing_lines": [92, 98, 100, 101, 107, 109, 134, 137, 138, 146, 147, 149, 150, 151, 152, 159, 161, 184, 202, 204, 220, 269, 270, 271, 277, 278, 279, 281, 295, 322, 338, 344, 345, 348, 349, 350, 351, 358, 359, 368, 369, 370, 378], "excluded_lines": [], "start_line": 1}}}, "src/config.py": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 15, 16, 19, 21, 22, 29, 30, 39], "summary": {"covered_lines": 15, "num_statements": 23, "percent_covered": 65.21739130434783, "percent_covered_display": "65", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 65.21739130434783, "percent_statements_covered_display": "65"}, "missing_lines": [23, 25, 26, 27, 32, 33, 35, 36], "excluded_lines": [], "functions": {"Settings.database_url": {"executed_lines": [19, 21, 22], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [23, 25, 26, 27], "excluded_lines": [], "start_line": 16}, "Settings.sync_database_url": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32, 33, 35, 36], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 15, 16, 29, 30, 39], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [19, 21, 22], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27"}, "missing_lines": [23, 25, 26, 27, 32, 33, 35, 36], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 2, 3, 6, 7, 9, 13, 15, 16, 29, 30, 39], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/core/__init__.py": {"executed_lines": [8, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [8, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [8, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/core/auth.py": {"executed_lines": [11, 12, 13, 15, 16, 18, 21, 22, 24, 25, 26, 29, 41, 57, 58, 59, 60, 62, 73, 74, 75, 76, 78, 89, 91, 92, 93, 94, 95, 98, 100, 117, 118, 119, 121, 123, 130, 133, 135, 150, 151, 154, 156, 163, 165, 191, 210, 219, 228, 240, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267], "summary": {"covered_lines": 60, "num_statements": 89, "percent_covered": 67.41573033707866, "percent_covered_display": "67", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 67.41573033707866, "percent_statements_covered_display": "67"}, "missing_lines": [23, 90, 131, 152, 176, 177, 178, 180, 181, 183, 184, 185, 187, 188, 189, 201, 202, 203, 204, 205, 206, 207, 208, 217, 226, 237, 238, 250, 252], "excluded_lines": [], "functions": {"AuthManager.__init__": {"executed_lines": [57, 58, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "AuthManager.hash_password": {"executed_lines": [73, 74, 75, 76], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "AuthManager.verify_password": {"executed_lines": [89, 91, 92, 93, 94, 95, 98], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [90], "excluded_lines": [], "start_line": 78}, "AuthManager.create_access_token": {"executed_lines": [117, 118, 119, 121, 123, 130, 133], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [131], "excluded_lines": [], "start_line": 100}, "AuthManager.create_refresh_token": {"executed_lines": [150, 151, 154, 156, 163], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [152], "excluded_lines": [], "start_line": 135}, "AuthManager.verify_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [176, 177, 178, 180, 181, 183, 184, 185, 187, 188, 189], "excluded_lines": [], "start_line": 165}, "AuthManager.get_token_expiry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [201, 202, 203, 204, 205, 206, 207, 208], "excluded_lines": [], "start_line": 191}, "AuthManager.generate_verification_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [217], "excluded_lines": [], "start_line": 210}, "AuthManager.generate_reset_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [226], "excluded_lines": [], "start_line": 219}, "AuthManager.generate_api_key": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 238], "excluded_lines": [], "start_line": 228}, "AuthManager.hash_api_key": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [250, 252], "excluded_lines": [], "start_line": 240}, "": {"executed_lines": [11, 12, 13, 15, 16, 18, 21, 22, 24, 25, 26, 29, 41, 62, 78, 100, 135, 165, 191, 210, 219, 228, 240, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97"}, "missing_lines": [23], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthManager": {"executed_lines": [57, 58, 59, 60, 73, 74, 75, 76, 89, 91, 92, 93, 94, 95, 98, 117, 118, 119, 121, 123, 130, 133, 150, 151, 154, 156, 163], "summary": {"covered_lines": 27, "num_statements": 55, "percent_covered": 49.09090909090909, "percent_covered_display": "49", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 49.09090909090909, "percent_statements_covered_display": "49"}, "missing_lines": [90, 131, 152, 176, 177, 178, 180, 181, 183, 184, 185, 187, 188, 189, 201, 202, 203, 204, 205, 206, 207, 208, 217, 226, 237, 238, 250, 252], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [11, 12, 13, 15, 16, 18, 21, 22, 24, 25, 26, 29, 41, 62, 78, 100, 135, 165, 191, 210, 219, 228, 240, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97"}, "missing_lines": [23], "excluded_lines": [], "start_line": 1}}}, "src/core/redis.py": {"executed_lines": [11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 40, 52, 53, 54, 55, 56, 58, 60, 61, 63, 64, 74, 77, 78, 79, 80, 82, 83, 84, 85, 91, 93, 94, 95, 96, 97, 98, 100, 101, 103, 105, 107, 108, 109, 110, 111, 112, 113, 114, 116, 120, 123, 124, 125, 126, 131, 133, 134, 135, 136, 141, 143, 144, 145, 146, 151, 153, 155, 156, 162, 172, 173, 174, 175, 177, 181, 183, 185, 187, 188, 206, 208, 209, 211, 213, 214, 215, 217, 218, 221, 223, 228, 230, 231, 233, 234, 235, 240, 242, 244, 245, 251, 260, 261, 262, 263, 265, 269, 271, 273, 278, 279, 309, 311, 312, 327, 328, 329, 332, 335, 336, 337, 338, 341, 344, 345, 346, 347, 350, 353, 354, 355, 356, 359, 363, 364, 365, 367, 368, 369, 371, 372, 373, 375], "summary": {"covered_lines": 154, "num_statements": 220, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [86, 87, 88, 89, 121, 122, 127, 128, 129, 137, 138, 139, 147, 148, 149, 154, 157, 158, 159, 179, 190, 192, 193, 196, 198, 199, 200, 201, 202, 203, 204, 224, 225, 226, 236, 237, 238, 243, 246, 247, 248, 267, 281, 282, 284, 285, 286, 289, 292, 295, 298, 300, 301, 303, 305, 306, 307, 314, 315, 317, 318, 319, 320, 321, 322, 323], "excluded_lines": [], "functions": {"RedisConfig.__init__": {"executed_lines": [30, 31, 32, 33, 34, 35, 36, 37], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "RedisClient.__init__": {"executed_lines": [53, 54, 55, 56], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "RedisClient.connect": {"executed_lines": [60, 61, 63, 64, 74, 77, 78, 79, 80, 82, 83, 84, 85], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [86, 87, 88, 89], "excluded_lines": [], "start_line": 58}, "RedisClient.disconnect": {"executed_lines": [93, 94, 95, 96, 97, 98], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "RedisClient.is_connected": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "RedisClient.get": {"executed_lines": [107, 108, 109, 110, 111, 112, 113, 114], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "RedisClient.set": {"executed_lines": [120, 123, 124, 125, 126], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [121, 122, 127, 128, 129], "excluded_lines": [], "start_line": 116}, "RedisClient.delete": {"executed_lines": [133, 134, 135, 136], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [137, 138, 139], "excluded_lines": [], "start_line": 131}, "RedisClient.exists": {"executed_lines": [143, 144, 145, 146], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [147, 148, 149], "excluded_lines": [], "start_line": 141}, "RedisClient.expire": {"executed_lines": [153, 155, 156], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [154, 157, 158, 159], "excluded_lines": [], "start_line": 151}, "JobQueue.__init__": {"executed_lines": [173, 174, 175], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "JobQueue.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [179], "excluded_lines": [], "start_line": 177}, "JobQueue.disconnect": {"executed_lines": [183], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "JobQueue.enqueue": {"executed_lines": [187, 188], "summary": {"covered_lines": 2, "num_statements": 13, "percent_covered": 15.384615384615385, "percent_covered_display": "15", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 15.384615384615385, "percent_statements_covered_display": "15"}, "missing_lines": [190, 192, 193, 196, 198, 199, 200, 201, 202, 203, 204], "excluded_lines": [], "start_line": 185}, "JobQueue.dequeue": {"executed_lines": [208, 209, 211, 213, 214, 215, 217, 218, 221, 223], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 76.92307692307692, "percent_statements_covered_display": "77"}, "missing_lines": [224, 225, 226], "excluded_lines": [], "start_line": 206}, "JobQueue.complete_job": {"executed_lines": [230, 231, 233, 234, 235], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [236, 237, 238], "excluded_lines": [], "start_line": 228}, "JobQueue.get_queue_size": {"executed_lines": [242, 244, 245], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [243, 246, 247, 248], "excluded_lines": [], "start_line": 240}, "RateLimiter.__init__": {"executed_lines": [261, 262, 263], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "RateLimiter.connect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [267], "excluded_lines": [], "start_line": 265}, "RateLimiter.disconnect": {"executed_lines": [271], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "RateLimiter.check": {"executed_lines": [278, 279], "summary": {"covered_lines": 2, "num_statements": 17, "percent_covered": 11.764705882352942, "percent_covered_display": "12", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 11.764705882352942, "percent_statements_covered_display": "12"}, "missing_lines": [281, 282, 284, 285, 286, 289, 292, 295, 298, 300, 301, 303, 305, 306, 307], "excluded_lines": [], "start_line": 273}, "RateLimiter.get_remaining": {"executed_lines": [311, 312], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 18.181818181818183, "percent_covered_display": "18", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18"}, "missing_lines": [314, 315, 317, 318, 319, 320, 321, 322, 323], "excluded_lines": [], "start_line": 309}, "get_redis_client": {"executed_lines": [335, 336, 337, 338], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "get_job_queue": {"executed_lines": [344, 345, 346, 347], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "get_rate_limiter": {"executed_lines": [353, 354, 355, 356], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "close_redis": {"executed_lines": [363, 364, 365, 367, 368, 369, 371, 372, 373, 375], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 359}, "": {"executed_lines": [11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 26, 29, 40, 52, 58, 91, 100, 101, 105, 116, 131, 141, 151, 162, 172, 177, 181, 185, 206, 228, 240, 251, 260, 265, 269, 273, 309, 327, 328, 329, 332, 341, 350, 359], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisConfig": {"executed_lines": [30, 31, 32, 33, 34, 35, 36, 37], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "RedisClient": {"executed_lines": [53, 54, 55, 56, 60, 61, 63, 64, 74, 77, 78, 79, 80, 82, 83, 84, 85, 93, 94, 95, 96, 97, 98, 103, 107, 108, 109, 110, 111, 112, 113, 114, 120, 123, 124, 125, 126, 133, 134, 135, 136, 143, 144, 145, 146, 153, 155, 156], "summary": {"covered_lines": 48, "num_statements": 67, "percent_covered": 71.64179104477611, "percent_covered_display": "72", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 71.64179104477611, "percent_statements_covered_display": "72"}, "missing_lines": [86, 87, 88, 89, 121, 122, 127, 128, 129, 137, 138, 139, 147, 148, 149, 154, 157, 158, 159], "excluded_lines": [], "start_line": 40}, "JobQueue": {"executed_lines": [173, 174, 175, 183, 187, 188, 208, 209, 211, 213, 214, 215, 217, 218, 221, 223, 230, 231, 233, 234, 235, 242, 244, 245], "summary": {"covered_lines": 24, "num_statements": 46, "percent_covered": 52.17391304347826, "percent_covered_display": "52", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 52.17391304347826, "percent_statements_covered_display": "52"}, "missing_lines": [179, 190, 192, 193, 196, 198, 199, 200, 201, 202, 203, 204, 224, 225, 226, 236, 237, 238, 243, 246, 247, 248], "excluded_lines": [], "start_line": 162}, "RateLimiter": {"executed_lines": [261, 262, 263, 271, 278, 279, 311, 312], "summary": {"covered_lines": 8, "num_statements": 33, "percent_covered": 24.242424242424242, "percent_covered_display": "24", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 24.242424242424242, "percent_statements_covered_display": "24"}, "missing_lines": [267, 281, 282, 284, 285, 286, 289, 292, 295, 298, 300, 301, 303, 305, 306, 307, 314, 315, 317, 318, 319, 320, 321, 322, 323], "excluded_lines": [], "start_line": 251}, "": {"executed_lines": [11, 12, 13, 14, 15, 17, 18, 19, 21, 23, 26, 29, 40, 52, 58, 91, 100, 101, 105, 116, 131, 141, 151, 162, 172, 177, 181, 185, 206, 228, 240, 251, 260, 265, 269, 273, 309, 327, 328, 329, 332, 335, 336, 337, 338, 341, 344, 345, 346, 347, 350, 353, 354, 355, 356, 359, 363, 364, 365, 367, 368, 369, 371, 372, 373, 375], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/core/secrets.py": {"executed_lines": [14, 15, 16, 17, 18, 19, 21, 24, 30, 31, 33, 34, 37, 48, 56, 63, 68, 75, 80, 85, 92, 97, 102, 110, 113, 116, 117, 118, 121, 130, 131, 132, 133, 135, 137, 138, 140, 141, 143, 145, 147, 151, 153, 170, 197, 218, 230, 231, 234, 236, 237, 239, 240, 242, 244, 247, 250, 251, 253, 259, 269, 280, 299, 306, 308, 310, 318, 328, 347, 361, 365, 368, 371, 372, 373, 376, 385, 391, 392, 433, 435, 438], "summary": {"covered_lines": 82, "num_statements": 186, "percent_covered": 44.086021505376344, "percent_covered_display": "44", "missing_lines": 104, "excluded_lines": 0, "percent_statements_covered": 44.086021505376344, "percent_statements_covered_display": "44"}, "missing_lines": [144, 146, 148, 155, 156, 158, 162, 163, 164, 165, 166, 167, 168, 172, 174, 175, 176, 177, 179, 180, 182, 183, 185, 189, 190, 191, 192, 193, 194, 195, 199, 200, 202, 203, 205, 207, 210, 211, 212, 213, 214, 215, 216, 241, 243, 245, 255, 256, 257, 261, 262, 263, 264, 265, 266, 267, 271, 272, 275, 276, 277, 278, 282, 283, 289, 291, 292, 293, 294, 295, 296, 297, 311, 312, 313, 314, 315, 316, 319, 320, 323, 324, 325, 326, 329, 330, 336, 338, 339, 340, 341, 342, 343, 406, 409, 410, 411, 413, 415, 416, 418, 420, 421, 423], "excluded_lines": [], "functions": {"SecretStr.__repr__": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "SecretStr.__str__": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "get_secrets_settings": {"executed_lines": [116, 117, 118], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "SecretsManager.__init__": {"executed_lines": [131, 132, 133], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "SecretsManager._initialize_backend": {"executed_lines": [137, 138, 140, 141, 143, 145, 147, 151], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [144, 146, 148], "excluded_lines": [], "start_line": 135}, "SecretsManager._init_aws": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [155, 156, 158, 162, 163, 164, 165, 166, 167, 168], "excluded_lines": [], "start_line": 153}, "SecretsManager._init_vault": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [172, 174, 175, 176, 177, 179, 180, 182, 183, 185, 189, 190, 191, 192, 193, 194, 195], "excluded_lines": [], "start_line": 170}, "SecretsManager._init_doppler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [199, 200, 202, 203, 205, 207, 210, 211, 212, 213, 214, 215, 216], "excluded_lines": [], "start_line": 197}, "SecretsManager.get_secret": {"executed_lines": [230, 231, 234, 236, 237, 239, 240, 242, 244, 247, 250, 251, 253], "summary": {"covered_lines": 13, "num_statements": 19, "percent_covered": 68.42105263157895, "percent_covered_display": "68", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 68.42105263157895, "percent_statements_covered_display": "68"}, "missing_lines": [241, 243, 245, 255, 256, 257], "excluded_lines": [], "start_line": 218}, "SecretsManager._get_aws_secret": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [261, 262, 263, 264, 265, 266, 267], "excluded_lines": [], "start_line": 259}, "SecretsManager._get_vault_secret": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [271, 272, 275, 276, 277, 278], "excluded_lines": [], "start_line": 269}, "SecretsManager._get_doppler_secret": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [282, 283, 289, 291, 292, 293, 294, 295, 296, 297], "excluded_lines": [], "start_line": 280}, "SecretsManager.get_all_secrets": {"executed_lines": [306, 308, 310, 318, 328, 347, 361], "summary": {"covered_lines": 7, "num_statements": 28, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [311, 312, 313, 314, 315, 316, 319, 320, 323, 324, 325, 326, 329, 330, 336, 338, 339, 340, 341, 342, 343], "excluded_lines": [], "start_line": 299}, "get_secrets_manager": {"executed_lines": [371, 372, 373], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368}, "Settings.settings_customise_sources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [406, 409, 410, 413, 420, 423], "excluded_lines": [], "start_line": 392}, "Settings.settings_customise_sources.SecretsManagerSource.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [411], "excluded_lines": [], "start_line": 410}, "Settings.settings_customise_sources.SecretsManagerSource.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [415, 416, 418], "excluded_lines": [], "start_line": 413}, "Settings.settings_customise_sources.SecretsManagerSource.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [421], "excluded_lines": [], "start_line": 420}, "get_secret": {"executed_lines": [435], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 433}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 48, 56, 63, 68, 75, 80, 85, 92, 97, 102, 110, 113, 121, 130, 135, 153, 170, 197, 218, 259, 269, 280, 299, 365, 368, 376, 385, 391, 392, 433, 438], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SecretStr": {"executed_lines": [31, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "SecretsManagerSettings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "SecretsManager": {"executed_lines": [131, 132, 133, 137, 138, 140, 141, 143, 145, 147, 151, 230, 231, 234, 236, 237, 239, 240, 242, 244, 247, 250, 251, 253, 306, 308, 310, 318, 328, 347, 361], "summary": {"covered_lines": 31, "num_statements": 124, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 93, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [144, 146, 148, 155, 156, 158, 162, 163, 164, 165, 166, 167, 168, 172, 174, 175, 176, 177, 179, 180, 182, 183, 185, 189, 190, 191, 192, 193, 194, 195, 199, 200, 202, 203, 205, 207, 210, 211, 212, 213, 214, 215, 216, 241, 243, 245, 255, 256, 257, 261, 262, 263, 264, 265, 266, 267, 271, 272, 275, 276, 277, 278, 282, 283, 289, 291, 292, 293, 294, 295, 296, 297, 311, 312, 313, 314, 315, 316, 319, 320, 323, 324, 325, 326, 329, 330, 336, 338, 339, 340, 341, 342, 343], "excluded_lines": [], "start_line": 121}, "Settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [406, 409, 410, 413, 420, 423], "excluded_lines": [], "start_line": 376}, "Settings.settings_customise_sources.SecretsManagerSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [411, 415, 416, 418, 421], "excluded_lines": [], "start_line": 409}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 21, 24, 30, 33, 37, 48, 56, 63, 68, 75, 80, 85, 92, 97, 102, 110, 113, 116, 117, 118, 121, 130, 135, 153, 170, 197, 218, 259, 269, 280, 299, 365, 368, 371, 372, 373, 376, 385, 391, 392, 433, 435, 438], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/core/storage.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 29, 44, 45, 46, 49, 50, 52, 71, 72, 73, 75, 78, 81, 82, 85, 88, 91, 92, 94, 96, 98, 104, 105, 106, 107, 109, 130, 131, 132, 133, 137, 142, 143, 144, 145, 146, 147, 149, 151, 154, 155, 156, 159, 168, 169, 171, 176, 181, 195, 196, 201, 204, 210, 211, 212, 213, 215, 216, 218, 220, 225, 235, 237, 248, 249, 250, 251, 254, 256, 259, 265, 266, 267, 268, 269, 270, 275, 276, 278, 280, 282, 283, 285, 295, 296, 298, 300, 301, 305, 306, 308, 310, 312, 313, 314, 318, 319, 329, 331, 333, 334, 336, 343, 350, 351, 352, 354, 356, 358, 359, 360, 361, 362, 363, 364, 365, 368, 370, 372, 373, 374, 375, 376, 377, 378, 382, 384], "summary": {"covered_lines": 138, "num_statements": 158, "percent_covered": 87.34177215189874, "percent_covered_display": "87", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 87.34177215189874, "percent_statements_covered_display": "87"}, "missing_lines": [135, 197, 198, 199, 252, 271, 272, 302, 303, 315, 320, 321, 322, 323, 324, 325, 326, 327, 366, 367], "excluded_lines": [], "functions": {"StorageManager.__init__": {"executed_lines": [71, 72, 73, 75, 78, 81, 82, 85, 88, 91, 92, 94], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "StorageManager._init_local_storage": {"executed_lines": [98, 104, 105, 106, 107], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "StorageManager.save_file": {"executed_lines": [130, 131, 132, 133], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [135], "excluded_lines": [], "start_line": 109}, "StorageManager._save_local": {"executed_lines": [142, 143, 144, 145, 146, 147, 149, 151, 154, 155, 156, 159, 168, 169], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "StorageManager._save_s3": {"executed_lines": [176], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "StorageManager.get_file": {"executed_lines": [195, 196], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [197, 198, 199], "excluded_lines": [], "start_line": 181}, "StorageManager._get_local": {"executed_lines": [204, 210, 211, 212, 213, 215, 216], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "StorageManager._get_s3": {"executed_lines": [220], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "StorageManager.get_upload_status": {"executed_lines": [235], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "StorageManager.delete_job_files": {"executed_lines": [248, 249, 250, 251], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [252], "excluded_lines": [], "start_line": 237}, "StorageManager._delete_local": {"executed_lines": [256, 259, 265, 266, 267, 268, 269, 270, 275, 276, 278], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [271, 272], "excluded_lines": [], "start_line": 254}, "StorageManager._delete_s3": {"executed_lines": [282, 283], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "StorageManager.cleanup_old_files": {"executed_lines": [295, 296, 298, 300, 301, 305, 306], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [302, 303], "excluded_lines": [], "start_line": 285}, "StorageManager._cleanup_local": {"executed_lines": [310, 312, 313, 314, 318, 319, 329], "summary": {"covered_lines": 7, "num_statements": 16, "percent_covered": 43.75, "percent_covered_display": "44", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 43.75, "percent_statements_covered_display": "44"}, "missing_lines": [315, 320, 321, 322, 323, 324, 325, 326, 327], "excluded_lines": [], "start_line": 308}, "StorageManager._cleanup_s3": {"executed_lines": [333, 334], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331}, "StorageManager.get_storage_stats": {"executed_lines": [343, 350, 351, 352, 354], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336}, "StorageManager._get_local_size": {"executed_lines": [358, 359, 360, 361, 362, 363, 364, 365, 368], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [366, 367], "excluded_lines": [], "start_line": 356}, "StorageManager._get_local_file_count": {"executed_lines": [372, 373, 374, 375, 376, 377, 378], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 29, 44, 45, 46, 49, 50, 52, 96, 109, 137, 171, 181, 201, 218, 225, 237, 254, 280, 285, 308, 331, 336, 356, 370, 382, 384], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StorageBackend": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "StorageManager": {"executed_lines": [71, 72, 73, 75, 78, 81, 82, 85, 88, 91, 92, 94, 98, 104, 105, 106, 107, 130, 131, 132, 133, 142, 143, 144, 145, 146, 147, 149, 151, 154, 155, 156, 159, 168, 169, 176, 195, 196, 204, 210, 211, 212, 213, 215, 216, 220, 235, 248, 249, 250, 251, 256, 259, 265, 266, 267, 268, 269, 270, 275, 276, 278, 282, 283, 295, 296, 298, 300, 301, 305, 306, 310, 312, 313, 314, 318, 319, 329, 333, 334, 343, 350, 351, 352, 354, 358, 359, 360, 361, 362, 363, 364, 365, 368, 372, 373, 374, 375, 376, 377, 378], "summary": {"covered_lines": 101, "num_statements": 121, "percent_covered": 83.47107438016529, "percent_covered_display": "83", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 83.47107438016529, "percent_statements_covered_display": "83"}, "missing_lines": [135, 197, 198, 199, 252, 271, 272, 302, 303, 315, 320, 321, 322, 323, 324, 325, 326, 327, 366, 367], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 29, 44, 45, 46, 49, 50, 52, 96, 109, 137, 171, 181, 201, 218, 225, 237, 254, 280, 285, 308, 331, 336, 356, 370, 382, 384], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/db/base.py": {"executed_lines": [1, 2, 7, 13, 14, 16, 29, 34, 35, 36], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [22], "excluded_lines": [], "functions": {"get_db": {"executed_lines": [35, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [1, 2, 7, 13, 14, 16, 29, 34], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [22], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 7, 13, 14, 16, 29, 34, 35, 36], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [22], "excluded_lines": [], "start_line": 1}}}, "src/db/behavior_templates_crud.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 25, 37, 38, 39, 40, 42, 45, 50, 51, 52, 53, 55, 56, 57, 60, 72, 75, 76, 78, 79, 81, 82, 84, 86, 87, 89, 91, 95, 98, 107, 108, 111, 118, 119, 120, 121, 124, 141, 142, 144, 150, 152, 153, 155, 158, 161, 167, 168, 169, 170, 173, 174, 175, 177, 178, 180, 181, 183, 186, 194, 195, 196, 199, 200, 203, 206, 207, 215, 224, 226], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"create_behavior_template": {"executed_lines": [25, 37, 38, 39, 40, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "get_behavior_template": {"executed_lines": [50, 51, 52, 53, 55, 56, 57], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "get_behavior_templates": {"executed_lines": [72, 75, 76, 78, 79, 81, 82, 84, 86, 87, 89, 91, 95, 98, 107, 108], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "update_behavior_template": {"executed_lines": [118, 119, 120, 121, 124, 141, 142, 144, 150, 152, 153, 155, 158], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111}, "delete_behavior_template": {"executed_lines": [167, 168, 169, 170, 173, 174, 175, 177, 178, 180, 181, 183], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "apply_behavior_template": {"executed_lines": [194, 195, 196, 199, 200, 203, 206, 207, 215, 224, 226], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 45, 60, 111, 161, 186], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 7, 10, 25, 37, 38, 39, 40, 42, 45, 50, 51, 52, 53, 55, 56, 57, 60, 72, 75, 76, 78, 79, 81, 82, 84, 86, 87, 89, 91, 95, 98, 107, 108, 111, 118, 119, 120, 121, 124, 141, 142, 144, 150, 152, 153, 155, 158, 161, 167, 168, 169, 170, 173, 174, 175, 177, 178, 180, 181, 183, 186, 194, 195, 196, 199, 200, 203, 206, 207, 215, 224, 226], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/db/crud.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 17, 26, 37, 38, 39, 40, 41, 42, 47, 48, 51, 53, 54, 55, 56, 57, 65, 66, 69, 72, 73, 74, 75, 77, 82, 83, 84, 85, 91, 92, 93, 96, 99, 100, 101, 102, 106, 116, 117, 118, 119, 120, 124, 127, 128, 129, 133, 134, 135, 138, 145, 146, 150, 154, 155, 156, 157, 158, 164, 170, 187, 193, 194, 195, 196, 197, 203, 206, 209, 210, 211, 214, 217, 218, 219, 222, 225, 226, 227, 233, 241, 246, 247, 248, 249, 250, 256, 259, 262, 263, 264, 267, 270, 271, 272, 275, 282, 283, 284, 286, 287, 288, 289, 292, 295, 298, 299, 300, 301, 305, 308, 313, 314, 315, 317, 318, 319, 320, 324, 330, 343, 346, 347, 358, 359, 362, 363, 364, 374, 375, 377, 378, 382, 383, 384, 386, 389, 398, 399, 403, 408, 409, 411, 414, 420, 425, 426, 429, 438, 442, 449, 452, 453, 456, 462, 467, 468, 474, 485, 493, 494, 495, 496, 497, 503, 506, 509, 510, 511, 514, 521, 522, 523, 524, 525, 526, 529, 541, 542, 543, 545, 546, 547, 548, 550, 552, 554, 555, 556, 559, 562, 565, 566, 567, 568, 574, 575, 576, 579, 580, 581, 582, 584, 585, 586, 587, 591, 594, 605, 607, 615, 616, 617, 626, 633, 634, 635, 636, 637, 643, 646, 649, 650, 651, 654, 657, 662, 663, 666, 676, 677, 681, 703, 704, 705, 706, 708, 710, 713, 716, 721, 722, 723, 724, 730, 731, 732, 735, 736, 737, 740, 741, 742, 743, 747, 750, 763, 773, 774, 775, 776, 777, 783, 786, 789, 790, 791, 794, 802, 803, 805, 807, 808, 809, 815, 825, 826, 827, 828, 831, 832, 834, 840, 841, 842, 843, 844, 850, 853, 855, 856, 857, 858, 860, 861, 862, 865, 869, 870, 871, 872, 874, 879, 880, 883, 890, 891, 892, 893, 895, 901, 902, 904, 905, 906, 911, 914, 916, 917, 921, 922, 923, 924, 928, 931, 935, 936, 940, 948, 949, 953, 957, 960, 964, 974, 975, 979, 997, 999, 1000, 1001, 1002, 1004, 1005, 1006, 1009, 1019, 1020, 1021, 1022, 1025, 1026, 1028, 1034, 1035, 1036, 1037, 1038, 1044, 1047, 1057, 1058, 1063, 1064, 1068, 1069, 1070, 1071, 1076, 1079, 1080, 1086, 1087, 1088, 1089, 1093, 1095, 1098, 1100, 1101, 1106, 1107, 1110, 1111, 1112, 1113, 1117, 1120, 1129, 1130, 1134, 1142, 1145, 1146, 1150, 1152, 1153, 1157, 1158, 1159, 1162, 1175, 1176, 1180, 1190, 1191, 1192, 1193, 1194, 1200, 1203, 1210, 1211, 1216, 1217, 1220, 1226, 1227, 1228, 1229, 1233, 1236, 1243, 1244, 1249, 1250, 1253, 1259, 1260, 1261, 1262, 1266, 1269, 1271, 1272, 1277, 1278, 1281, 1282, 1283, 1284, 1288, 1291, 1300, 1301, 1305, 1313, 1316, 1317, 1325, 1349, 1358, 1359, 1360, 1361, 1365, 1368, 1382, 1383, 1384, 1385, 1387, 1390, 1391, 1394, 1408, 1414, 1415, 1418, 1441, 1442, 1447, 1448, 1449, 1452, 1453, 1454, 1455, 1457, 1458, 1459, 1463, 1466, 1485, 1486, 1491, 1492, 1496, 1497, 1499, 1501, 1502, 1503, 1507], "summary": {"covered_lines": 506, "num_statements": 672, "percent_covered": 75.29761904761905, "percent_covered_display": "75", "missing_lines": 166, "excluded_lines": 0, "percent_statements_covered": 75.29761904761905, "percent_statements_covered_display": "75"}, "missing_lines": [43, 44, 45, 86, 87, 88, 121, 122, 123, 130, 131, 147, 148, 159, 160, 161, 163, 198, 199, 200, 202, 251, 252, 253, 255, 290, 293, 302, 303, 304, 321, 322, 323, 379, 380, 381, 400, 450, 498, 499, 500, 502, 549, 551, 553, 557, 560, 569, 570, 571, 588, 589, 590, 619, 624, 638, 639, 640, 642, 678, 683, 692, 693, 694, 696, 701, 707, 709, 711, 714, 725, 726, 727, 738, 744, 745, 746, 778, 779, 780, 782, 804, 806, 845, 846, 847, 849, 907, 908, 909, 918, 919, 925, 926, 927, 937, 938, 983, 992, 993, 1039, 1040, 1041, 1043, 1059, 1060, 1065, 1073, 1074, 1075, 1077, 1090, 1091, 1092, 1102, 1103, 1108, 1114, 1115, 1116, 1131, 1132, 1143, 1154, 1155, 1177, 1178, 1195, 1196, 1197, 1199, 1212, 1213, 1218, 1230, 1231, 1232, 1245, 1246, 1251, 1263, 1264, 1265, 1273, 1274, 1279, 1285, 1286, 1287, 1302, 1303, 1314, 1362, 1363, 1364, 1443, 1444, 1460, 1461, 1462, 1487, 1488, 1493, 1504, 1505, 1506], "excluded_lines": [], "functions": {"create_job": {"executed_lines": [26, 37, 38, 39, 40, 41, 42, 47, 48], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [43, 44, 45], "excluded_lines": [], "start_line": 17}, "get_job": {"executed_lines": [53, 54, 55, 56, 57, 65, 66], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "update_job_status": {"executed_lines": [72, 73, 74, 75, 77, 82, 83, 84, 85, 91, 92, 93], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [86, 87, 88], "excluded_lines": [], "start_line": 69}, "update_job_progress": {"executed_lines": [99, 100, 101, 102, 106, 116, 117, 118, 119, 120, 124], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [121, 122, 123], "excluded_lines": [], "start_line": 96}, "get_job_progress": {"executed_lines": [128, 129, 133, 134, 135], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [130, 131], "excluded_lines": [], "start_line": 127}, "create_result": {"executed_lines": [145, 146, 150, 154, 155, 156, 157, 158, 164], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [147, 148, 159, 160, 161, 163], "excluded_lines": [], "start_line": 138}, "create_enhanced_feedback": {"executed_lines": [187, 193, 194, 195, 196, 197, 203], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [198, 199, 200, 202], "excluded_lines": [], "start_line": 170}, "get_feedback": {"executed_lines": [209, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "get_feedback_by_job_id": {"executed_lines": [217, 218, 219], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "list_all_feedback": {"executed_lines": [225, 226, 227], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "create_document_embedding": {"executed_lines": [241, 246, 247, 248, 249, 250, 256], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [251, 252, 253, 255], "excluded_lines": [], "start_line": 233}, "get_document_embedding_by_id": {"executed_lines": [262, 263, 264], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "get_document_embedding_by_hash": {"executed_lines": [270, 271, 272], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "update_document_embedding": {"executed_lines": [282, 283, 284, 286, 287, 288, 289, 292, 295, 298, 299, 300, 301, 305], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [290, 293, 302, 303, 304], "excluded_lines": [], "start_line": 275}, "delete_document_embedding": {"executed_lines": [313, 314, 315, 317, 318, 319, 320, 324], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [321, 322, 323], "excluded_lines": [], "start_line": 308}, "create_document_with_chunks": {"executed_lines": [343, 346, 347, 358, 359, 362, 363, 364, 374, 375, 377, 378, 382, 383, 384, 386], "summary": {"covered_lines": 16, "num_statements": 19, "percent_covered": 84.21052631578948, "percent_covered_display": "84", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84"}, "missing_lines": [379, 380, 381], "excluded_lines": [], "start_line": 330}, "get_document_with_chunks": {"executed_lines": [398, 399, 403, 408, 409, 411], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [400], "excluded_lines": [], "start_line": 389}, "get_chunks_by_parent": {"executed_lines": [420, 425, 426], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "search_similar_chunks": {"executed_lines": [438, 442, 449, 452, 453], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [450], "excluded_lines": [], "start_line": 429}, "find_similar_embeddings": {"executed_lines": [462, 467, 468], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456}, "create_experiment": {"executed_lines": [485, 493, 494, 495, 496, 497, 503], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [498, 499, 500, 502], "excluded_lines": [], "start_line": 474}, "get_experiment": {"executed_lines": [509, 510, 511], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 506}, "list_experiments": {"executed_lines": [521, 522, 523, 524, 525, 526], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 514}, "update_experiment": {"executed_lines": [541, 542, 543, 545, 546, 547, 548, 550, 552, 554, 555, 556, 559, 562, 565, 566, 567, 568, 574, 575, 576], "summary": {"covered_lines": 21, "num_statements": 29, "percent_covered": 72.41379310344827, "percent_covered_display": "72", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 72.41379310344827, "percent_statements_covered_display": "72"}, "missing_lines": [549, 551, 553, 557, 560, 569, 570, 571], "excluded_lines": [], "start_line": 529}, "delete_experiment": {"executed_lines": [580, 581, 582, 584, 585, 586, 587, 591], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [588, 589, 590], "excluded_lines": [], "start_line": 579}, "create_experiment_variant": {"executed_lines": [605, 607, 615, 616, 617, 626, 633, 634, 635, 636, 637, 643], "summary": {"covered_lines": 12, "num_statements": 18, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [619, 624, 638, 639, 640, 642], "excluded_lines": [], "start_line": 594}, "get_experiment_variant": {"executed_lines": [649, 650, 651], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 646}, "list_experiment_variants": {"executed_lines": [657, 662, 663], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 654}, "update_experiment_variant": {"executed_lines": [676, 677, 681, 703, 704, 705, 706, 708, 710, 713, 716, 721, 722, 723, 724, 730, 731, 732], "summary": {"covered_lines": 18, "num_statements": 32, "percent_covered": 56.25, "percent_covered_display": "56", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 56.25, "percent_statements_covered_display": "56"}, "missing_lines": [678, 683, 692, 693, 694, 696, 701, 707, 709, 711, 714, 725, 726, 727], "excluded_lines": [], "start_line": 666}, "delete_experiment_variant": {"executed_lines": [736, 737, 740, 741, 742, 743, 747], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [738, 744, 745, 746], "excluded_lines": [], "start_line": 735}, "create_experiment_result": {"executed_lines": [763, 773, 774, 775, 776, 777, 783], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [778, 779, 780, 782], "excluded_lines": [], "start_line": 750}, "get_experiment_result": {"executed_lines": [789, 790, 791], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 786}, "list_experiment_results": {"executed_lines": [802, 803, 805, 807, 808, 809], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [804, 806], "excluded_lines": [], "start_line": 794}, "create_behavior_file": {"executed_lines": [825, 826, 827, 828, 831, 832, 834, 840, 841, 842, 843, 844, 850], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [845, 846, 847, 849], "excluded_lines": [], "start_line": 815}, "get_behavior_file": {"executed_lines": [855, 856, 857, 858, 860, 861, 862], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 853}, "get_behavior_files_by_conversion": {"executed_lines": [869, 870, 871, 872, 874, 879, 880], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 865}, "update_behavior_file_content": {"executed_lines": [890, 891, 892, 893, 895, 901, 902, 904, 905, 906, 911], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [907, 908, 909], "excluded_lines": [], "start_line": 883}, "delete_behavior_file": {"executed_lines": [916, 917, 921, 922, 923, 924, 928], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 58.333333333333336, "percent_covered_display": "58", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58"}, "missing_lines": [918, 919, 925, 926, 927], "excluded_lines": [], "start_line": 914}, "get_behavior_files_by_type": {"executed_lines": [935, 936, 940, 948, 949], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [937, 938], "excluded_lines": [], "start_line": 931}, "upsert_progress": {"executed_lines": [957], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 953}, "list_jobs": {"executed_lines": [964, 974, 975], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 960}, "get_addon_details": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [983, 992, 993], "excluded_lines": [], "start_line": 979}, "get_addon_asset": {"executed_lines": [999, 1000, 1001, 1002, 1004, 1005, 1006], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 997}, "create_addon_asset": {"executed_lines": [1019, 1020, 1021, 1022, 1025, 1026, 1028, 1034, 1035, 1036, 1037, 1038, 1044], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [1039, 1040, 1041, 1043], "excluded_lines": [], "start_line": 1009}, "update_addon_asset": {"executed_lines": [1057, 1058, 1063, 1064, 1068, 1069, 1070, 1071, 1076, 1079, 1080, 1086, 1087, 1088, 1089, 1093, 1095], "summary": {"covered_lines": 17, "num_statements": 27, "percent_covered": 62.96296296296296, "percent_covered_display": "63", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 62.96296296296296, "percent_statements_covered_display": "63"}, "missing_lines": [1059, 1060, 1065, 1073, 1074, 1075, 1077, 1090, 1091, 1092], "excluded_lines": [], "start_line": 1047}, "delete_addon_asset": {"executed_lines": [1100, 1101, 1106, 1107, 1110, 1111, 1112, 1113, 1117], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [1102, 1103, 1108, 1114, 1115, 1116], "excluded_lines": [], "start_line": 1098}, "list_addon_assets": {"executed_lines": [1129, 1130, 1134, 1142, 1145, 1146], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [1131, 1132, 1143], "excluded_lines": [], "start_line": 1120}, "get_asset": {"executed_lines": [1152, 1153, 1157, 1158, 1159], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [1154, 1155], "excluded_lines": [], "start_line": 1150}, "create_asset": {"executed_lines": [1175, 1176, 1180, 1190, 1191, 1192, 1193, 1194, 1200], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [1177, 1178, 1195, 1196, 1197, 1199], "excluded_lines": [], "start_line": 1162}, "update_asset_status": {"executed_lines": [1210, 1211, 1216, 1217, 1220, 1226, 1227, 1228, 1229, 1233], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [1212, 1213, 1218, 1230, 1231, 1232], "excluded_lines": [], "start_line": 1203}, "update_asset_metadata": {"executed_lines": [1243, 1244, 1249, 1250, 1253, 1259, 1260, 1261, 1262, 1266], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [1245, 1246, 1251, 1263, 1264, 1265], "excluded_lines": [], "start_line": 1236}, "delete_asset": {"executed_lines": [1271, 1272, 1277, 1278, 1281, 1282, 1283, 1284, 1288], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [1273, 1274, 1279, 1285, 1286, 1287], "excluded_lines": [], "start_line": 1269}, "list_assets_for_conversion": {"executed_lines": [1300, 1301, 1305, 1313, 1316, 1317], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [1302, 1303, 1314], "excluded_lines": [], "start_line": 1291}, "create_pattern_submission": {"executed_lines": [1349, 1358, 1359, 1360, 1361, 1365], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [1362, 1363, 1364], "excluded_lines": [], "start_line": 1325}, "get_pattern_submission": {"executed_lines": [1382, 1383, 1384, 1385, 1387, 1390, 1391], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1368}, "get_pending_submissions": {"executed_lines": [1408, 1414, 1415], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1394}, "update_pattern_submission_status": {"executed_lines": [1441, 1442, 1447, 1448, 1449, 1452, 1453, 1454, 1455, 1457, 1458, 1459, 1463], "summary": {"covered_lines": 13, "num_statements": 18, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72"}, "missing_lines": [1443, 1444, 1460, 1461, 1462], "excluded_lines": [], "start_line": 1418}, "vote_on_pattern": {"executed_lines": [1485, 1486, 1491, 1492, 1496, 1497, 1499, 1501, 1502, 1503, 1507], "summary": {"covered_lines": 11, "num_statements": 17, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 64.70588235294117, "percent_statements_covered_display": "65"}, "missing_lines": [1487, 1488, 1493, 1504, 1505, 1506], "excluded_lines": [], "start_line": 1466}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 17, 51, 69, 96, 127, 138, 170, 206, 214, 222, 233, 259, 267, 275, 308, 330, 389, 414, 429, 456, 474, 506, 514, 529, 579, 594, 646, 654, 666, 735, 750, 786, 794, 815, 853, 865, 883, 914, 931, 953, 960, 979, 997, 1009, 1047, 1098, 1120, 1150, 1162, 1203, 1236, 1269, 1291, 1325, 1368, 1394, 1418, 1466], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 17, 26, 37, 38, 39, 40, 41, 42, 47, 48, 51, 53, 54, 55, 56, 57, 65, 66, 69, 72, 73, 74, 75, 77, 82, 83, 84, 85, 91, 92, 93, 96, 99, 100, 101, 102, 106, 116, 117, 118, 119, 120, 124, 127, 128, 129, 133, 134, 135, 138, 145, 146, 150, 154, 155, 156, 157, 158, 164, 170, 187, 193, 194, 195, 196, 197, 203, 206, 209, 210, 211, 214, 217, 218, 219, 222, 225, 226, 227, 233, 241, 246, 247, 248, 249, 250, 256, 259, 262, 263, 264, 267, 270, 271, 272, 275, 282, 283, 284, 286, 287, 288, 289, 292, 295, 298, 299, 300, 301, 305, 308, 313, 314, 315, 317, 318, 319, 320, 324, 330, 343, 346, 347, 358, 359, 362, 363, 364, 374, 375, 377, 378, 382, 383, 384, 386, 389, 398, 399, 403, 408, 409, 411, 414, 420, 425, 426, 429, 438, 442, 449, 452, 453, 456, 462, 467, 468, 474, 485, 493, 494, 495, 496, 497, 503, 506, 509, 510, 511, 514, 521, 522, 523, 524, 525, 526, 529, 541, 542, 543, 545, 546, 547, 548, 550, 552, 554, 555, 556, 559, 562, 565, 566, 567, 568, 574, 575, 576, 579, 580, 581, 582, 584, 585, 586, 587, 591, 594, 605, 607, 615, 616, 617, 626, 633, 634, 635, 636, 637, 643, 646, 649, 650, 651, 654, 657, 662, 663, 666, 676, 677, 681, 703, 704, 705, 706, 708, 710, 713, 716, 721, 722, 723, 724, 730, 731, 732, 735, 736, 737, 740, 741, 742, 743, 747, 750, 763, 773, 774, 775, 776, 777, 783, 786, 789, 790, 791, 794, 802, 803, 805, 807, 808, 809, 815, 825, 826, 827, 828, 831, 832, 834, 840, 841, 842, 843, 844, 850, 853, 855, 856, 857, 858, 860, 861, 862, 865, 869, 870, 871, 872, 874, 879, 880, 883, 890, 891, 892, 893, 895, 901, 902, 904, 905, 906, 911, 914, 916, 917, 921, 922, 923, 924, 928, 931, 935, 936, 940, 948, 949, 953, 957, 960, 964, 974, 975, 979, 997, 999, 1000, 1001, 1002, 1004, 1005, 1006, 1009, 1019, 1020, 1021, 1022, 1025, 1026, 1028, 1034, 1035, 1036, 1037, 1038, 1044, 1047, 1057, 1058, 1063, 1064, 1068, 1069, 1070, 1071, 1076, 1079, 1080, 1086, 1087, 1088, 1089, 1093, 1095, 1098, 1100, 1101, 1106, 1107, 1110, 1111, 1112, 1113, 1117, 1120, 1129, 1130, 1134, 1142, 1145, 1146, 1150, 1152, 1153, 1157, 1158, 1159, 1162, 1175, 1176, 1180, 1190, 1191, 1192, 1193, 1194, 1200, 1203, 1210, 1211, 1216, 1217, 1220, 1226, 1227, 1228, 1229, 1233, 1236, 1243, 1244, 1249, 1250, 1253, 1259, 1260, 1261, 1262, 1266, 1269, 1271, 1272, 1277, 1278, 1281, 1282, 1283, 1284, 1288, 1291, 1300, 1301, 1305, 1313, 1316, 1317, 1325, 1349, 1358, 1359, 1360, 1361, 1365, 1368, 1382, 1383, 1384, 1385, 1387, 1390, 1391, 1394, 1408, 1414, 1415, 1418, 1441, 1442, 1447, 1448, 1449, 1452, 1453, 1454, 1455, 1457, 1458, 1459, 1463, 1466, 1485, 1486, 1491, 1492, 1496, 1497, 1499, 1501, 1502, 1503, 1507], "summary": {"covered_lines": 506, "num_statements": 672, "percent_covered": 75.29761904761905, "percent_covered_display": "75", "missing_lines": 166, "excluded_lines": 0, "percent_statements_covered": 75.29761904761905, "percent_statements_covered_display": "75"}, "missing_lines": [43, 44, 45, 86, 87, 88, 121, 122, 123, 130, 131, 147, 148, 159, 160, 161, 163, 198, 199, 200, 202, 251, 252, 253, 255, 290, 293, 302, 303, 304, 321, 322, 323, 379, 380, 381, 400, 450, 498, 499, 500, 502, 549, 551, 553, 557, 560, 569, 570, 571, 588, 589, 590, 619, 624, 638, 639, 640, 642, 678, 683, 692, 693, 694, 696, 701, 707, 709, 711, 714, 725, 726, 727, 738, 744, 745, 746, 778, 779, 780, 782, 804, 806, 845, 846, 847, 849, 907, 908, 909, 918, 919, 925, 926, 927, 937, 938, 983, 992, 993, 1039, 1040, 1041, 1043, 1059, 1060, 1065, 1073, 1074, 1075, 1077, 1090, 1091, 1092, 1102, 1103, 1108, 1114, 1115, 1116, 1131, 1132, 1143, 1154, 1155, 1177, 1178, 1195, 1196, 1197, 1199, 1212, 1213, 1218, 1230, 1231, 1232, 1245, 1246, 1251, 1263, 1264, 1265, 1273, 1274, 1279, 1285, 1286, 1287, 1302, 1303, 1314, 1362, 1363, 1364, 1443, 1444, 1460, 1461, 1462, 1487, 1488, 1493, 1504, 1505, 1506], "excluded_lines": [], "start_line": 1}}}, "src/db/declarative_base.py": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/db/init_db.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11], "summary": {"covered_lines": 8, "num_statements": 31, "percent_covered": 25.806451612903224, "percent_covered_display": "26", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 25.806451612903224, "percent_statements_covered_display": "26"}, "missing_lines": [14, 15, 17, 18, 19, 21, 22, 23, 26, 27, 29, 30, 32, 33, 34, 38, 39, 41, 42, 43, 44, 45, 47], "excluded_lines": [], "functions": {"init_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [14, 15, 17, 18, 19, 21, 22, 23, 26, 27, 29, 30, 32, 33, 34, 38, 39, 41, 42, 43, 44, 45, 47], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11], "summary": {"covered_lines": 8, "num_statements": 31, "percent_covered": 25.806451612903224, "percent_covered_display": "26", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 25.806451612903224, "percent_statements_covered_display": "26"}, "missing_lines": [14, 15, 17, 18, 19, 21, 22, 23, 26, 27, 29, 30, 32, 33, 34, 38, 39, 41, 42, 43, 44, 45, 47], "excluded_lines": [], "start_line": 1}}}, "src/db/models.py": {"executed_lines": [1, 2, 3, 4, 19, 20, 21, 22, 23, 27, 28, 29, 31, 32, 33, 38, 39, 40, 42, 47, 52, 53, 58, 66, 67, 71, 73, 77, 80, 81, 82, 84, 89, 94, 95, 101, 104, 105, 106, 108, 113, 119, 120, 127, 133, 134, 135, 137, 142, 143, 144, 147, 152, 160, 161, 162, 165, 166, 167, 169, 174, 177, 178, 179, 184, 192, 193, 201, 202, 203, 205, 210, 213, 214, 217, 218, 223, 231, 234, 235, 236, 238, 243, 249, 252, 257, 265, 268, 269, 270, 272, 277, 280, 283, 288, 296, 302, 303, 304, 306, 311, 316, 317, 320, 321, 326, 334, 340, 341, 342, 344, 345, 348, 349, 350, 351, 355, 358, 359, 360, 362, 363, 366, 368, 369, 373, 374, 376, 379, 382, 383, 384, 386, 387, 391, 397, 398, 399, 401, 406, 411, 414, 415, 416, 421, 422, 423, 424, 425, 426, 431, 439, 445, 446, 447, 449, 450, 451, 452, 453, 454, 455, 456, 458, 463, 466, 467, 468, 470, 471, 472, 473, 474, 475, 477, 483, 484, 485, 487, 488, 491, 492, 495, 496, 499, 500, 501, 504, 507, 513, 514, 515, 517, 518, 519, 520, 521, 522, 525, 528, 531, 539, 546, 547, 548, 550, 551, 556, 557, 558, 559, 560, 563, 571, 572, 577, 578, 579, 581, 582, 587, 588, 591, 594, 597, 600, 601, 604, 609, 613, 614, 615, 617, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 636, 647, 648, 649, 651, 656, 659, 662, 663, 664, 667, 669, 670, 673, 674, 675, 678, 689, 690, 691, 693, 698, 699, 700, 701, 706, 712, 717, 718, 719, 723, 728, 733, 738, 750, 753, 754, 756, 761, 767, 768, 773, 779, 780, 785, 786, 790, 795, 803, 806, 809, 810, 812, 817, 823, 824, 825, 826, 831, 832, 837, 845], "summary": {"covered_lines": 305, "num_statements": 306, "percent_covered": 99.67320261437908, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.67320261437908, "percent_statements_covered_display": "99"}, "missing_lines": [35], "excluded_lines": [], "functions": {"JSONType.load_dialect_impl": {"executed_lines": [32, 33], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [35], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [1, 2, 3, 4, 19, 20, 21, 22, 23, 27, 28, 29, 31, 38, 39, 40, 42, 47, 52, 53, 58, 66, 67, 71, 73, 77, 80, 81, 82, 84, 89, 94, 95, 101, 104, 105, 106, 108, 113, 119, 120, 127, 133, 134, 135, 137, 142, 143, 144, 147, 152, 160, 161, 162, 165, 166, 167, 169, 174, 177, 178, 179, 184, 192, 193, 201, 202, 203, 205, 210, 213, 214, 217, 218, 223, 231, 234, 235, 236, 238, 243, 249, 252, 257, 265, 268, 269, 270, 272, 277, 280, 283, 288, 296, 302, 303, 304, 306, 311, 316, 317, 320, 321, 326, 334, 340, 341, 342, 344, 345, 348, 349, 350, 351, 355, 358, 359, 360, 362, 363, 366, 368, 369, 373, 374, 376, 379, 382, 383, 384, 386, 387, 391, 397, 398, 399, 401, 406, 411, 414, 415, 416, 421, 422, 423, 424, 425, 426, 431, 439, 445, 446, 447, 449, 450, 451, 452, 453, 454, 455, 456, 458, 463, 466, 467, 468, 470, 471, 472, 473, 474, 475, 477, 483, 484, 485, 487, 488, 491, 492, 495, 496, 499, 500, 501, 504, 507, 513, 514, 515, 517, 518, 519, 520, 521, 522, 525, 528, 531, 539, 546, 547, 548, 550, 551, 556, 557, 558, 559, 560, 563, 571, 572, 577, 578, 579, 581, 582, 587, 588, 591, 594, 597, 600, 601, 604, 609, 613, 614, 615, 617, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 636, 647, 648, 649, 651, 656, 659, 662, 663, 664, 667, 669, 670, 673, 674, 675, 678, 689, 690, 691, 693, 698, 699, 700, 701, 706, 712, 717, 718, 719, 723, 728, 733, 738, 750, 753, 754, 756, 761, 767, 768, 773, 779, 780, 785, 786, 790, 795, 803, 806, 809, 810, 812, 817, 823, 824, 825, 826, 831, 832, 837, 845], "summary": {"covered_lines": 303, "num_statements": 303, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JSONType": {"executed_lines": [32, 33], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [35], "excluded_lines": [], "start_line": 27}, "ConversionJob": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ConversionResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "JobProgress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "Addon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "AddonBlock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "AddonAsset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "AddonBehavior": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "AddonRecipe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "BehaviorFile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "ConversionFeedback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "CorrectionSubmission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358}, "Asset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397}, "ComparisonResultDb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 445}, "FeatureMappingDb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466}, "DocumentEmbedding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 483}, "Experiment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513}, "ExperimentVariant": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546}, "ExperimentResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 577}, "BehaviorTemplate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613}, "AnalyticsEvent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 647}, "PatternSubmission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 689}, "User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 750}, "APIKey": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 806}, "": {"executed_lines": [1, 2, 3, 4, 19, 20, 21, 22, 23, 27, 28, 29, 31, 38, 39, 40, 42, 47, 52, 53, 58, 66, 67, 71, 73, 77, 80, 81, 82, 84, 89, 94, 95, 101, 104, 105, 106, 108, 113, 119, 120, 127, 133, 134, 135, 137, 142, 143, 144, 147, 152, 160, 161, 162, 165, 166, 167, 169, 174, 177, 178, 179, 184, 192, 193, 201, 202, 203, 205, 210, 213, 214, 217, 218, 223, 231, 234, 235, 236, 238, 243, 249, 252, 257, 265, 268, 269, 270, 272, 277, 280, 283, 288, 296, 302, 303, 304, 306, 311, 316, 317, 320, 321, 326, 334, 340, 341, 342, 344, 345, 348, 349, 350, 351, 355, 358, 359, 360, 362, 363, 366, 368, 369, 373, 374, 376, 379, 382, 383, 384, 386, 387, 391, 397, 398, 399, 401, 406, 411, 414, 415, 416, 421, 422, 423, 424, 425, 426, 431, 439, 445, 446, 447, 449, 450, 451, 452, 453, 454, 455, 456, 458, 463, 466, 467, 468, 470, 471, 472, 473, 474, 475, 477, 483, 484, 485, 487, 488, 491, 492, 495, 496, 499, 500, 501, 504, 507, 513, 514, 515, 517, 518, 519, 520, 521, 522, 525, 528, 531, 539, 546, 547, 548, 550, 551, 556, 557, 558, 559, 560, 563, 571, 572, 577, 578, 579, 581, 582, 587, 588, 591, 594, 597, 600, 601, 604, 609, 613, 614, 615, 617, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 636, 647, 648, 649, 651, 656, 659, 662, 663, 664, 667, 669, 670, 673, 674, 675, 678, 689, 690, 691, 693, 698, 699, 700, 701, 706, 712, 717, 718, 719, 723, 728, 733, 738, 750, 753, 754, 756, 761, 767, 768, 773, 779, 780, 785, 786, 790, 795, 803, 806, 809, 810, 812, 817, 823, 824, 825, 826, 831, 832, 837, 845], "summary": {"covered_lines": 303, "num_statements": 303, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/db/query_monitor.py": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 23, 24, 26, 29, 30, 33, 34, 35, 36, 37, 38, 40, 49, 50, 54, 59, 62, 70, 71, 72, 73, 74, 76, 104, 125, 134, 142, 148, 154, 204, 207, 208, 210, 223, 229, 234, 242, 243, 246, 274, 275, 305, 333, 340, 345, 350, 355], "summary": {"covered_lines": 54, "num_statements": 149, "percent_covered": 36.241610738255034, "percent_covered_display": "36", "missing_lines": 95, "excluded_lines": 0, "percent_statements_covered": 36.241610738255034, "percent_statements_covered_display": "36"}, "missing_lines": [42, 43, 44, 45, 46, 47, 52, 56, 87, 90, 92, 94, 101, 102, 106, 107, 109, 111, 112, 113, 115, 118, 119, 120, 127, 128, 136, 137, 140, 144, 145, 146, 150, 151, 152, 156, 157, 158, 159, 161, 162, 163, 165, 212, 213, 215, 220, 221, 225, 226, 227, 231, 232, 236, 237, 238, 254, 256, 257, 259, 261, 262, 264, 265, 267, 268, 271, 287, 288, 289, 291, 292, 294, 295, 300, 302, 315, 316, 317, 318, 319, 321, 322, 323, 324, 326, 327, 328, 330, 335, 337, 342, 347, 352, 357], "excluded_lines": [], "functions": {"QueryMetrics.add_execution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 43, 44, 45, 46, 47], "excluded_lines": [], "start_line": 40}, "QueryMetrics.avg_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52], "excluded_lines": [], "start_line": 50}, "QueryMetrics.is_potential_n_plus_one": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [56], "excluded_lines": [], "start_line": 54}, "QueryMonitor.__init__": {"executed_lines": [70, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "QueryMonitor.normalize_query": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [87, 90, 92, 94, 101, 102], "excluded_lines": [], "start_line": 76}, "QueryMonitor.record_query": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [106, 107, 109, 111, 112, 113, 115, 118, 119, 120], "excluded_lines": [], "start_line": 104}, "QueryMonitor.get_n_plus_one_candidates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [127, 128], "excluded_lines": [], "start_line": 125}, "QueryMonitor.get_slowest_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 137, 140], "excluded_lines": [], "start_line": 134}, "QueryMonitor.get_most_executed_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [144, 145, 146], "excluded_lines": [], "start_line": 142}, "QueryMonitor.reset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150, 151, 152], "excluded_lines": [], "start_line": 148}, "QueryMonitor.get_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [156, 157, 158, 159, 161, 162, 163, 165], "excluded_lines": [], "start_line": 154}, "QueryMonitorStack.__init__": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207}, "QueryMonitorStack.push": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [212, 213, 215, 220, 221], "excluded_lines": [], "start_line": 210}, "QueryMonitorStack.pop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [225, 226, 227], "excluded_lines": [], "start_line": 223}, "QueryMonitorStack.increment_query_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [231, 232], "excluded_lines": [], "start_line": 229}, "QueryMonitorStack.get_current_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [236, 237, 238], "excluded_lines": [], "start_line": 234}, "setup_query_monitoring": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [254, 256, 257, 261, 262], "excluded_lines": [], "start_line": 246}, "setup_query_monitoring.receive_before_cursor_execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [259], "excluded_lines": [], "start_line": 257}, "setup_query_monitoring.receive_after_cursor_execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [264, 265, 267, 268, 271], "excluded_lines": [], "start_line": 262}, "track_query_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [287, 288, 289, 291, 292, 294, 295, 300, 302], "excluded_lines": [], "start_line": 275}, "track_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [315, 316, 330], "excluded_lines": [], "start_line": 305}, "track_queries.decorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [317, 321, 322, 326, 327, 328], "excluded_lines": [], "start_line": 315}, "track_queries.decorator.async_wrapper": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [318, 319], "excluded_lines": [], "start_line": 317}, "track_queries.decorator.sync_wrapper": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [323, 324], "excluded_lines": [], "start_line": 322}, "asyncio_iscoroutinefunction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [335, 337], "excluded_lines": [], "start_line": 333}, "get_query_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [342], "excluded_lines": [], "start_line": 340}, "reset_query_monitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [347], "excluded_lines": [], "start_line": 345}, "enable_query_monitoring": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [352], "excluded_lines": [], "start_line": 350}, "disable_query_monitoring": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [357], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 23, 24, 26, 29, 30, 33, 34, 35, 36, 37, 38, 40, 49, 50, 54, 59, 62, 76, 104, 125, 134, 142, 148, 154, 204, 207, 210, 223, 229, 234, 242, 243, 246, 274, 275, 305, 333, 340, 345, 350, 355], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QueryMetrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 43, 44, 45, 46, 47, 52, 56], "excluded_lines": [], "start_line": 30}, "QueryMonitor": {"executed_lines": [70, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 40, "percent_covered": 12.5, "percent_covered_display": "12", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 12.5, "percent_statements_covered_display": "12"}, "missing_lines": [87, 90, 92, 94, 101, 102, 106, 107, 109, 111, 112, 113, 115, 118, 119, 120, 127, 128, 136, 137, 140, 144, 145, 146, 150, 151, 152, 156, 157, 158, 159, 161, 162, 163, 165], "excluded_lines": [], "start_line": 59}, "QueryMonitorStack": {"executed_lines": [208], "summary": {"covered_lines": 1, "num_statements": 14, "percent_covered": 7.142857142857143, "percent_covered_display": "7", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 7.142857142857143, "percent_statements_covered_display": "7"}, "missing_lines": [212, 213, 215, 220, 221, 225, 226, 227, 231, 232, 236, 237, 238], "excluded_lines": [], "start_line": 204}, "": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 23, 24, 26, 29, 30, 33, 34, 35, 36, 37, 38, 40, 49, 50, 54, 59, 62, 76, 104, 125, 134, 142, 148, 154, 204, 207, 210, 223, 229, 234, 242, 243, 246, 274, 275, 305, 333, 340, 345, 350, 355], "summary": {"covered_lines": 48, "num_statements": 87, "percent_covered": 55.172413793103445, "percent_covered_display": "55", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 55.172413793103445, "percent_statements_covered_display": "55"}, "missing_lines": [254, 256, 257, 259, 261, 262, 264, 265, 267, 268, 271, 287, 288, 289, 291, 292, 294, 295, 300, 302, 315, 316, 317, 318, 319, 321, 322, 323, 324, 326, 327, 328, 330, 335, 337, 342, 347, 352, 357], "excluded_lines": [], "start_line": 1}}}, "src/file_processor.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 19, 20, 27, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 56, 62, 68, 69, 71, 76, 77, 79, 81, 83, 84, 85, 87, 89, 93, 94, 95, 96, 97, 98, 99, 100, 103, 105, 106, 107, 108, 109, 111, 112, 114, 117, 118, 119, 120, 123, 124, 126, 127, 128, 136, 140, 143, 144, 147, 148, 151, 152, 155, 158, 160, 161, 162, 164, 165, 168, 169, 171, 172, 176, 177, 178, 182, 189, 192, 199, 200, 201, 202, 206, 213, 214, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 248, 249, 250, 252, 253, 255, 258, 259, 260, 261, 265, 268, 269, 273, 274, 275, 280, 288, 291, 306, 310, 313, 314, 315, 318, 320, 321, 322, 323, 324, 326, 327, 328, 331, 332, 333, 334, 342, 347, 359, 362, 363, 367, 371, 372, 383, 384, 385, 386, 390, 394, 395, 396, 397, 398, 399, 400, 401, 404, 416, 419, 421, 427, 430, 431, 433, 435, 436, 441, 442, 443, 444, 446, 449, 450, 453, 460, 461, 468, 469, 470, 472, 476, 477, 478, 479, 486, 487, 488, 495, 497, 498, 500, 501, 519, 520, 521, 522, 523, 524, 525, 526, 527, 574, 578, 579, 580, 582, 584, 592, 596, 597, 598, 599, 600, 602, 603, 604, 605, 608, 609, 611, 612, 615, 616, 617, 619, 621, 622, 623, 626, 627, 629, 632, 634, 636, 637, 638, 640, 644, 647, 648, 649, 651, 652, 653, 655, 656, 659, 660, 662, 663, 668, 670, 671, 673, 678, 684, 687, 688, 689, 691, 692, 693, 698, 701, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729, 731, 737, 738, 742, 743, 746, 748, 749, 750, 753, 754, 755, 759, 760, 761, 765], "summary": {"covered_lines": 326, "num_statements": 399, "percent_covered": 81.70426065162907, "percent_covered_display": "82", "missing_lines": 73, "excluded_lines": 0, "percent_statements_covered": 81.70426065162907, "percent_statements_covered_display": "82"}, "missing_lines": [86, 115, 129, 131, 134, 183, 184, 185, 240, 241, 242, 243, 282, 283, 284, 297, 298, 301, 302, 350, 351, 352, 462, 465, 480, 481, 482, 483, 502, 503, 504, 506, 507, 508, 509, 511, 512, 513, 516, 517, 528, 529, 530, 531, 534, 535, 536, 537, 538, 540, 543, 544, 547, 548, 549, 550, 551, 552, 556, 557, 558, 560, 561, 564, 565, 566, 570, 571, 624, 642, 664, 672, 676], "excluded_lines": [], "functions": {"FileProcessor._sanitize_filename": {"executed_lines": [76, 77, 79, 81, 83, 84, 85, 87], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [86], "excluded_lines": [], "start_line": 71}, "FileProcessor._is_safe_url": {"executed_lines": [93, 94, 95, 96, 97, 98, 99, 100, 103, 105, 106, 107, 108, 109, 111, 112, 114, 117, 118, 119, 120, 123, 124, 126, 127, 128], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87"}, "missing_lines": [115, 129, 131, 134], "excluded_lines": [], "start_line": 89}, "FileProcessor.validate_upload": {"executed_lines": [140, 143, 144, 147, 148, 151, 152, 155, 158, 160, 161, 162, 164, 165, 168, 169, 171, 172, 176, 177, 178, 182, 189, 192, 199, 200, 201, 202], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90"}, "missing_lines": [183, 184, 185], "excluded_lines": [], "start_line": 136}, "FileProcessor.validate_downloaded_file": {"executed_lines": [213, 214, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 248, 249, 250, 252, 253, 255, 258, 259, 260, 261, 265, 268, 269, 273, 274, 275, 280, 288, 291], "summary": {"covered_lines": 36, "num_statements": 47, "percent_covered": 76.59574468085107, "percent_covered_display": "77", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 76.59574468085107, "percent_statements_covered_display": "77"}, "missing_lines": [240, 241, 242, 243, 282, 283, 284, 297, 298, 301, 302], "excluded_lines": [], "start_line": 206}, "FileProcessor.scan_for_malware": {"executed_lines": [310, 313, 314, 315, 318, 320, 321, 322, 323, 324, 326, 327, 328, 331, 332, 333, 334, 342, 347, 359, 362, 363, 367, 371, 372, 383, 384, 385, 386, 390, 394, 395, 396, 397, 398, 399, 400, 401, 404, 416, 419], "summary": {"covered_lines": 41, "num_statements": 44, "percent_covered": 93.18181818181819, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.18181818181819, "percent_statements_covered_display": "93"}, "missing_lines": [350, 351, 352], "excluded_lines": [], "start_line": 306}, "FileProcessor.extract_mod_files": {"executed_lines": [427, 430, 431, 433, 435, 436, 441, 442, 443, 444, 446, 449, 450, 453, 460, 461, 468, 469, 470, 472, 476, 477, 478, 479, 486, 487, 488, 495, 497, 498, 500, 501, 519, 520, 521, 522, 523, 524, 525, 526, 527, 574, 578, 579, 580, 582, 584], "summary": {"covered_lines": 47, "num_statements": 93, "percent_covered": 50.53763440860215, "percent_covered_display": "51", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 50.53763440860215, "percent_statements_covered_display": "51"}, "missing_lines": [462, 465, 480, 481, 482, 483, 502, 503, 504, 506, 507, 508, 509, 511, 512, 513, 516, 517, 528, 529, 530, 531, 534, 535, 536, 537, 538, 540, 543, 544, 547, 548, 549, 550, 551, 552, 556, 557, 558, 560, 561, 564, 565, 566, 570, 571], "excluded_lines": [], "start_line": 421}, "FileProcessor.download_from_url": {"executed_lines": [596, 597, 598, 599, 600, 602, 603, 604, 605, 608, 609, 611, 612, 615, 616, 617, 619, 621, 622, 623, 626, 627, 629, 632, 634, 636, 637, 638, 640, 644, 647, 648, 649, 651, 652, 653, 655, 656, 659, 660, 662, 663, 668, 670, 671, 673, 678, 684, 687, 688, 689, 691, 692, 693, 698, 701, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729], "summary": {"covered_lines": 76, "num_statements": 81, "percent_covered": 93.82716049382717, "percent_covered_display": "94", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 93.82716049382717, "percent_statements_covered_display": "94"}, "missing_lines": [624, 642, 664, 672, 676], "excluded_lines": [], "start_line": 592}, "FileProcessor.cleanup_temp_files": {"executed_lines": [737, 738, 742, 743, 746, 748, 749, 750, 753, 754, 755, 759, 760, 761, 765], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 731}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 19, 20, 27, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 56, 62, 68, 69, 71, 89, 136, 206, 306, 421, 592, 731], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "ScanResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "ExtractionResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "DownloadResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "FileProcessor": {"executed_lines": [76, 77, 79, 81, 83, 84, 85, 87, 93, 94, 95, 96, 97, 98, 99, 100, 103, 105, 106, 107, 108, 109, 111, 112, 114, 117, 118, 119, 120, 123, 124, 126, 127, 128, 140, 143, 144, 147, 148, 151, 152, 155, 158, 160, 161, 162, 164, 165, 168, 169, 171, 172, 176, 177, 178, 182, 189, 192, 199, 200, 201, 202, 213, 214, 219, 220, 221, 222, 223, 224, 227, 228, 229, 230, 233, 234, 235, 236, 237, 248, 249, 250, 252, 253, 255, 258, 259, 260, 261, 265, 268, 269, 273, 274, 275, 280, 288, 291, 310, 313, 314, 315, 318, 320, 321, 322, 323, 324, 326, 327, 328, 331, 332, 333, 334, 342, 347, 359, 362, 363, 367, 371, 372, 383, 384, 385, 386, 390, 394, 395, 396, 397, 398, 399, 400, 401, 404, 416, 419, 427, 430, 431, 433, 435, 436, 441, 442, 443, 444, 446, 449, 450, 453, 460, 461, 468, 469, 470, 472, 476, 477, 478, 479, 486, 487, 488, 495, 497, 498, 500, 501, 519, 520, 521, 522, 523, 524, 525, 526, 527, 574, 578, 579, 580, 582, 584, 596, 597, 598, 599, 600, 602, 603, 604, 605, 608, 609, 611, 612, 615, 616, 617, 619, 621, 622, 623, 626, 627, 629, 632, 634, 636, 637, 638, 640, 644, 647, 648, 649, 651, 652, 653, 655, 656, 659, 660, 662, 663, 668, 670, 671, 673, 678, 684, 687, 688, 689, 691, 692, 693, 698, 701, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729, 737, 738, 742, 743, 746, 748, 749, 750, 753, 754, 755, 759, 760, 761, 765], "summary": {"covered_lines": 277, "num_statements": 350, "percent_covered": 79.14285714285714, "percent_covered_display": "79", "missing_lines": 73, "excluded_lines": 0, "percent_statements_covered": 79.14285714285714, "percent_statements_covered_display": "79"}, "missing_lines": [86, 115, 129, 131, 134, 183, 184, 185, 240, 241, 242, 243, 282, 283, 284, 297, 298, 301, 302, 350, 351, 352, 462, 465, 480, 481, 482, 483, 502, 503, 504, 506, 507, 508, 509, 511, 512, 513, 516, 517, 528, 529, 530, 531, 534, 535, 536, 537, 538, 540, 543, 544, 547, 548, 549, 550, 551, 552, 556, 557, 558, 560, 561, 564, 565, 566, 570, 571, 624, 642, 664, 672, 676], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 19, 20, 27, 28, 29, 30, 31, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 56, 62, 68, 69, 71, 89, 136, 206, 306, 421, 592, 731], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 10], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 10], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 10], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/pipeline.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 91, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 91, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 9, 10, 11, 13, 14, 15, 16, 19, 20, 21, 22, 25, 28, 31, 45, 52, 53, 54, 55, 56, 57, 60, 61, 63, 66, 67, 68, 70, 76, 78, 83, 105, 113, 115, 116, 118, 121, 122, 125, 126, 127, 130, 131, 132, 134, 135, 136, 139, 140, 141, 142, 143, 146, 147, 148, 149, 150, 153, 154, 157, 159, 174, 176, 183, 185, 186, 187, 190, 191, 192, 198, 199, 201, 202, 203, 204, 206, 208, 219, 220, 221, 222, 225, 228, 230, 236, 248, 249, 251, 267], "excluded_lines": [], "functions": {"IngestionPipeline.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 53, 54, 55, 56, 57, 60, 61], "excluded_lines": [], "start_line": 45}, "IngestionPipeline._load_sources": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [66, 67, 68, 70], "excluded_lines": [], "start_line": 63}, "IngestionPipeline._load_processors": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [78], "excluded_lines": [], "start_line": 76}, "IngestionPipeline.ingest_source": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 46, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [105, 113, 115, 116, 118, 121, 122, 125, 126, 127, 130, 131, 132, 134, 135, 136, 139, 140, 141, 142, 143, 146, 147, 148, 149, 150, 153, 154, 157, 159, 174, 176, 183, 185, 186, 187, 190, 191, 192, 198, 199, 201, 202, 203, 204, 206], "excluded_lines": [], "start_line": 83}, "IngestionPipeline._process_document": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [219, 220, 221, 222, 225, 228, 230], "excluded_lines": [], "start_line": 208}, "IngestionPipeline._chunk_document": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [248, 249], "excluded_lines": [], "start_line": 236}, "IngestionPipeline._generate_embedding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [267], "excluded_lines": [], "start_line": 251}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 9, 10, 11, 13, 14, 15, 16, 19, 20, 21, 22, 25, 28, 31, 45, 63, 76, 83, 208, 236, 251], "excluded_lines": [], "start_line": 1}}, "classes": {"IngestionPipeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 69, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 69, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 53, 54, 55, 56, 57, 60, 61, 66, 67, 68, 70, 78, 105, 113, 115, 116, 118, 121, 122, 125, 126, 127, 130, 131, 132, 134, 135, 136, 139, 140, 141, 142, 143, 146, 147, 148, 149, 150, 153, 154, 157, 159, 174, 176, 183, 185, 186, 187, 190, 191, 192, 198, 199, 201, 202, 203, 204, 206, 219, 220, 221, 222, 225, 228, 230, 248, 249, 267], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [8, 9, 10, 11, 13, 14, 15, 16, 19, 20, 21, 22, 25, 28, 31, 45, 63, 76, 83, 208, 236, 251], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/processors/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/processors/html.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 87, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 87, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 32, 46, 55, 68, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 107, 109, 115, 116, 118, 124, 127, 128, 129, 132, 133, 134, 135, 136, 138, 145, 146, 147, 149, 150, 151, 154, 155, 156, 158, 160, 172, 173, 174, 177, 178, 179, 182, 184, 191, 194, 195, 196, 197, 200, 203, 204, 205, 206, 207, 208, 209, 211, 217, 219, 226, 228, 229, 230, 231, 232, 237, 239, 246, 248, 249, 250, 251, 252, 257], "excluded_lines": [], "functions": {"HTMLProcessor.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32, 46], "excluded_lines": [], "start_line": 29}, "HTMLProcessor.process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 107, 109, 115, 116, 118], "excluded_lines": [], "start_line": 55}, "HTMLProcessor._remove_unwanted": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [127, 128, 129, 132, 133, 134, 135, 136], "excluded_lines": [], "start_line": 124}, "HTMLProcessor._extract_main_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [145, 146, 147, 149, 150, 151, 154, 155, 156, 158], "excluded_lines": [], "start_line": 138}, "HTMLProcessor._extract_title": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [172, 173, 174, 177, 178, 179, 182], "excluded_lines": [], "start_line": 160}, "HTMLProcessor._extract_code_blocks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [191, 194, 195, 196, 197, 200, 203, 204, 205, 206, 207, 208, 209, 211, 217], "excluded_lines": [], "start_line": 184}, "HTMLProcessor._extract_links": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [226, 228, 229, 230, 231, 232, 237], "excluded_lines": [], "start_line": 219}, "HTMLProcessor._extract_headings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [246, 248, 249, 250, 251, 252, 257], "excluded_lines": [], "start_line": 239}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 55, 124, 138, 160, 184, 219, 239], "excluded_lines": [], "start_line": 1}}, "classes": {"HTMLProcessor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 72, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 72, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32, 46, 68, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 107, 109, 115, 116, 118, 127, 128, 129, 132, 133, 134, 135, 136, 145, 146, 147, 149, 150, 151, 154, 155, 156, 158, 172, 173, 174, 177, 178, 179, 182, 191, 194, 195, 196, 197, 200, 203, 204, 205, 206, 207, 208, 209, 211, 217, 226, 228, 229, 230, 231, 232, 237, 246, 248, 249, 250, 251, 252, 257], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 55, 124, 138, 160, 184, 219, 239], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/processors/markdown.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 31, 42, 55, 57, 60, 63, 66, 69, 72, 75, 78, 88, 90, 96, 97, 99, 105, 117, 118, 119, 120, 121, 122, 125, 127, 137, 140, 141, 143, 144, 145, 146, 148, 154, 156, 167, 168, 171, 172], "excluded_lines": [], "functions": {"MarkdownProcessor.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31], "excluded_lines": [], "start_line": 29}, "MarkdownProcessor.process": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [55, 57, 60, 63, 66, 69, 72, 75, 78, 88, 90, 96, 97, 99], "excluded_lines": [], "start_line": 42}, "MarkdownProcessor._extract_title": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 118, 119, 120, 121, 122, 125], "excluded_lines": [], "start_line": 105}, "MarkdownProcessor._extract_code_blocks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [137, 140, 141, 143, 144, 145, 146, 148, 154], "excluded_lines": [], "start_line": 127}, "MarkdownProcessor._count_words": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [167, 168, 171, 172], "excluded_lines": [], "start_line": 156}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 42, 105, 127, 156], "excluded_lines": [], "start_line": 1}}, "classes": {"MarkdownProcessor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 35, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31, 55, 57, 60, 63, 66, 69, 72, 75, 78, 88, 90, 96, 97, 99, 117, 118, 119, 120, 121, 122, 125, 137, 140, 141, 143, 144, 145, 146, 148, 154, 167, 168, 171, 172], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 11, 14, 17, 29, 42, 105, 127, 156], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/sources/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 12, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/sources/base.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 15, 16, 17, 18, 21, 22, 32, 33, 34, 35, 36, 38, 40, 41, 44, 53, 54, 68, 70, 71, 81], "excluded_lines": [], "functions": {"RawDocument.__post_init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [40, 41], "excluded_lines": [], "start_line": 38}, "BaseSourceAdapter.fetch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68], "excluded_lines": [], "start_line": 54}, "BaseSourceAdapter.validate_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [81], "excluded_lines": [], "start_line": 71}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 15, 16, 17, 18, 21, 22, 32, 33, 34, 35, 36, 38, 44, 53, 54, 70, 71], "excluded_lines": [], "start_line": 1}}, "classes": {"DocumentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RawDocument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [40, 41], "excluded_lines": [], "start_line": 22}, "BaseSourceAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68, 81], "excluded_lines": [], "start_line": 44}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 15, 16, 17, 18, 21, 22, 32, 33, 34, 35, 36, 38, 44, 53, 54, 70, 71], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/sources/bedrock_docs.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 51, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 28, 30, 46, 47, 48, 50, 52, 53, 54, 55, 57, 59, 61, 62, 63, 64, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 106, 117, 118, 119, 122, 123, 124, 127, 128, 129, 131], "excluded_lines": [], "functions": {"BedrockDocsAdapter.fetch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48, 50, 52, 53, 54, 55, 57, 59, 61, 62, 63, 64, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104], "excluded_lines": [], "start_line": 30}, "BedrockDocsAdapter.validate_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 118, 119, 122, 123, 124, 127, 128, 129, 131], "excluded_lines": [], "start_line": 106}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 28, 30, 106], "excluded_lines": [], "start_line": 1}}, "classes": {"BedrockDocsAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48, 50, 52, 53, 54, 55, 57, 59, 61, 62, 63, 64, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 117, 118, 119, 122, 123, 124, 127, 128, 129, 131], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 28, 30, 106], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/sources/fabric_docs.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 106, 118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "functions": {"FabricDocsAdapter.fetch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104], "excluded_lines": [], "start_line": 29}, "FabricDocsAdapter.validate_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "start_line": 106}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 106], "excluded_lines": [], "start_line": 1}}, "classes": {"FabricDocsAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 106], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/sources/forge_docs.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 106, 118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "functions": {"ForgeDocsAdapter.fetch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104], "excluded_lines": [], "start_line": 29}, "ForgeDocsAdapter.validate_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "start_line": 106}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 106], "excluded_lines": [], "start_line": 1}}, "classes": {"ForgeDocsAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 60, 61, 62, 63, 66, 67, 70, 73, 81, 83, 91, 93, 94, 95, 97, 98, 99, 101, 102, 104, 118, 119, 120, 123, 124, 125, 127], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 19, 26, 27, 29, 106], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/validators/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/ingestion/validators/quality.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 17, 26, 27, 28, 31, 41, 42, 43, 45, 56, 57, 60, 61, 63, 64, 67, 68, 71, 72, 74, 75, 78, 79, 82, 83, 86, 88, 94, 105, 108, 109, 111, 113, 115, 126, 127, 130, 131, 134, 135, 136, 138], "excluded_lines": [], "functions": {"QualityValidator.validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [56, 57, 60, 61, 63, 64, 67, 68, 71, 72, 74, 75, 78, 79, 82, 83, 86, 88], "excluded_lines": [], "start_line": 45}, "QualityValidator._is_meaningful": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [105, 108, 109, 111, 113], "excluded_lines": [], "start_line": 94}, "QualityValidator._is_repetitive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [126, 127, 130, 131, 134, 135, 136, 138], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 17, 26, 27, 28, 31, 41, 42, 43, 45, 94, 115], "excluded_lines": [], "start_line": 1}}, "classes": {"ValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "QualityValidator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [56, 57, 60, 61, 63, 64, 67, 68, 71, 72, 74, 75, 78, 79, 82, 83, 86, 88, 105, 108, 109, 111, 113, 126, 127, 130, 131, 134, 135, 136, 138], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 13, 16, 17, 26, 27, 28, 31, 41, 42, 43, 45, 94, 115], "excluded_lines": [], "start_line": 1}}}, "src/java_analyzer_agent.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 22, 24, 26, 40, 41, 42, 49, 50, 53, 54, 55, 56, 59, 60, 63, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 79, 80, 81, 84, 86, 87, 88, 95, 100, 101, 106, 107, 109, 118, 121, 122, 124, 125, 130, 132, 133, 135, 136, 148, 154, 155, 156, 158, 161, 164, 165, 166, 172, 174, 181, 183, 184, 186, 187, 226, 240, 251, 256, 257, 258, 259, 260, 265, 266, 267, 268, 269, 270, 275, 276, 277, 278, 280, 281, 282, 283, 284, 288, 290, 292, 294, 295, 297, 300, 301, 304, 306, 307, 309, 311, 314, 315, 316, 317, 318, 321, 323, 326, 329], "summary": {"covered_lines": 117, "num_statements": 161, "percent_covered": 72.67080745341615, "percent_covered_display": "73", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 72.67080745341615, "percent_statements_covered_display": "73"}, "missing_lines": [82, 127, 137, 140, 141, 142, 143, 146, 168, 169, 170, 190, 191, 193, 194, 195, 197, 198, 200, 201, 205, 206, 207, 212, 215, 218, 219, 221, 222, 224, 232, 233, 234, 237, 238, 247, 248, 249, 261, 262, 271, 272, 285, 286], "excluded_lines": [], "functions": {"JavaAnalyzerAgent.__init__": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "JavaAnalyzerAgent.analyze_jar_for_mvp": {"executed_lines": [40, 41, 42, 49, 50, 53, 54, 55, 56, 59, 60, 63, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 79, 80, 81, 84, 86, 87, 88], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [82], "excluded_lines": [], "start_line": 26}, "JavaAnalyzerAgent._find_block_texture": {"executed_lines": [100, 101, 106, 107], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "JavaAnalyzerAgent._extract_registry_name_from_jar": {"executed_lines": [118, 121, 122, 124, 125, 130, 132, 133, 135, 136], "summary": {"covered_lines": 10, "num_statements": 17, "percent_covered": 58.8235294117647, "percent_covered_display": "59", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 58.8235294117647, "percent_statements_covered_display": "59"}, "missing_lines": [127, 137, 140, 141, 142, 143, 146], "excluded_lines": [], "start_line": 109}, "JavaAnalyzerAgent._parse_java_sources_for_register": {"executed_lines": [154, 155, 156, 158, 161, 164, 165, 166, 172], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [168, 169, 170], "excluded_lines": [], "start_line": 148}, "JavaAnalyzerAgent._extract_registry_from_ast": {"executed_lines": [181, 183, 184, 186, 187], "summary": {"covered_lines": 5, "num_statements": 24, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 20.833333333333332, "percent_statements_covered_display": "21"}, "missing_lines": [190, 191, 193, 194, 195, 197, 198, 200, 201, 205, 206, 207, 212, 215, 218, 219, 221, 222, 224], "excluded_lines": [], "start_line": 174}, "JavaAnalyzerAgent._is_literal_in_method_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [232, 233, 234, 237, 238], "excluded_lines": [], "start_line": 226}, "JavaAnalyzerAgent._is_block_class_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [247, 248, 249], "excluded_lines": [], "start_line": 240}, "JavaAnalyzerAgent._extract_mod_id_from_metadata": {"executed_lines": [256, 257, 258, 259, 260, 265, 266, 267, 268, 269, 270, 275, 276, 277, 278, 280, 281, 282, 283, 284, 288], "summary": {"covered_lines": 21, "num_statements": 27, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [261, 262, 271, 272, 285, 286], "excluded_lines": [], "start_line": 251}, "JavaAnalyzerAgent._find_block_class_name": {"executed_lines": [292, 294, 295, 297, 300, 301, 304, 306, 307, 309], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290}, "JavaAnalyzerAgent._class_name_to_registry_name": {"executed_lines": [314, 315, 316, 317, 318, 321, 323, 326, 329], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 22, 26, 95, 109, 148, 174, 226, 240, 251, 290, 311], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JavaAnalyzerAgent": {"executed_lines": [24, 40, 41, 42, 49, 50, 53, 54, 55, 56, 59, 60, 63, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 79, 80, 81, 84, 86, 87, 88, 100, 101, 106, 107, 118, 121, 122, 124, 125, 130, 132, 133, 135, 136, 154, 155, 156, 158, 161, 164, 165, 166, 172, 181, 183, 184, 186, 187, 256, 257, 258, 259, 260, 265, 266, 267, 268, 269, 270, 275, 276, 277, 278, 280, 281, 282, 283, 284, 288, 292, 294, 295, 297, 300, 301, 304, 306, 307, 309, 314, 315, 316, 317, 318, 321, 323, 326, 329], "summary": {"covered_lines": 98, "num_statements": 142, "percent_covered": 69.01408450704226, "percent_covered_display": "69", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 69.01408450704226, "percent_statements_covered_display": "69"}, "missing_lines": [82, 127, 137, 140, 141, 142, 143, 146, 168, 169, 170, 190, 191, 193, 194, 195, 197, 198, 200, 201, 205, 206, 207, 212, 215, 218, 219, 221, 222, 224, 232, 233, 234, 237, 238, 247, 248, 249, 261, 262, 271, 272, 285, 286], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 22, 26, 95, 109, 148, 174, 226, 240, 251, 290, 311], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/main.py": {"executed_lines": [1, 2, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 48, 49, 52, 70, 73, 77, 78, 81, 82, 84, 87, 89, 90, 91, 94, 97, 98, 100, 101, 104, 106, 107, 108, 110, 114, 117, 120, 161, 173, 178, 181, 182, 185, 186, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 219, 223, 227, 229, 230, 231, 234, 236, 237, 241, 242, 246, 249, 250, 251, 255, 256, 259, 260, 263, 266, 267, 268, 269, 272, 275, 276, 277, 278, 279, 280, 281, 284, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 303, 304, 305, 309, 310, 320, 321, 383, 780, 896, 897, 975, 980, 1086, 1087, 1133, 1134, 1172, 1173, 1230, 1239, 1254, 1259, 1279, 1284, 1305, 1310, 1320, 1325, 1345, 1350, 1383, 1388, 1415, 1420, 1449, 1450, 1474, 1479, 1511, 1512], "summary": {"covered_lines": 167, "num_statements": 617, "percent_covered": 27.06645056726094, "percent_covered_display": "27", "missing_lines": 450, "excluded_lines": 0, "percent_statements_covered": 27.06645056726094, "percent_statements_covered_display": "27"}, "missing_lines": [102, 103, 174, 175, 189, 190, 191, 193, 194, 239, 243, 312, 329, 330, 333, 339, 340, 341, 342, 343, 349, 350, 351, 354, 355, 356, 357, 358, 359, 360, 364, 365, 367, 369, 371, 384, 386, 389, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 414, 419, 421, 424, 442, 444, 449, 450, 453, 454, 459, 460, 461, 462, 463, 464, 465, 468, 473, 474, 480, 481, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 500, 505, 506, 512, 513, 518, 523, 524, 527, 528, 533, 534, 535, 536, 537, 538, 541, 542, 543, 544, 545, 548, 551, 552, 558, 559, 564, 565, 566, 567, 568, 569, 570, 571, 574, 575, 595, 596, 616, 617, 629, 630, 643, 646, 647, 650, 660, 661, 666, 667, 674, 679, 680, 681, 685, 686, 687, 688, 692, 694, 695, 699, 700, 701, 704, 707, 712, 714, 715, 717, 718, 719, 720, 721, 726, 728, 729, 733, 734, 735, 736, 737, 738, 741, 744, 745, 746, 750, 751, 755, 757, 758, 759, 760, 761, 762, 763, 767, 768, 770, 772, 773, 777, 782, 783, 784, 785, 787, 789, 807, 809, 810, 811, 814, 817, 818, 820, 826, 828, 830, 831, 836, 837, 840, 841, 842, 845, 847, 848, 850, 853, 854, 855, 856, 857, 858, 859, 862, 863, 864, 867, 868, 869, 871, 873, 874, 875, 877, 878, 880, 882, 883, 885, 887, 888, 889, 890, 891, 892, 908, 909, 911, 913, 915, 916, 918, 919, 920, 921, 923, 929, 938, 940, 941, 945, 958, 961, 962, 965, 967, 992, 993, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1017, 1018, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1060, 1073, 1075, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1105, 1118, 1119, 1130, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1165, 1166, 1167, 1168, 1186, 1188, 1189, 1191, 1192, 1197, 1199, 1206, 1207, 1209, 1211, 1214, 1215, 1217, 1231, 1241, 1243, 1244, 1245, 1246, 1247, 1248, 1250, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1270, 1275, 1276, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1295, 1300, 1301, 1314, 1315, 1316, 1317, 1336, 1337, 1338, 1339, 1360, 1363, 1364, 1366, 1367, 1370, 1371, 1372, 1375, 1376, 1377, 1380, 1396, 1397, 1398, 1402, 1404, 1405, 1406, 1408, 1430, 1431, 1432, 1436, 1437, 1438, 1439, 1440, 1444, 1445, 1446, 1459, 1460, 1461, 1465, 1466, 1467, 1471, 1483, 1484, 1485, 1487, 1490, 1493, 1494, 1495, 1498, 1499, 1500, 1501, 1503, 1516], "excluded_lines": [], "functions": {"lifespan": {"executed_lines": [100, 101, 104, 106, 107, 108, 110], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [102, 103], "excluded_lines": [], "start_line": 98}, "startup_event": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [189, 190, 191, 193, 194], "excluded_lines": [], "start_line": 186}, "ConversionRequest.resolved_file_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239], "excluded_lines": [], "start_line": 237}, "ConversionRequest.resolved_original_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [243], "excluded_lines": [], "start_line": 242}, "health_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [312], "excluded_lines": [], "start_line": 310}, "upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [329, 330, 333, 339, 340, 341, 342, 343, 349, 350, 351, 354, 355, 356, 357, 358, 359, 360, 364, 365, 367, 369, 371], "excluded_lines": [], "start_line": 321}, "simulate_ai_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 151, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 151, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [384, 386, 389, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 414, 419, 421, 442, 444, 449, 450, 453, 454, 459, 460, 461, 462, 463, 464, 465, 468, 473, 474, 480, 481, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 500, 505, 506, 512, 513, 518, 523, 524, 527, 528, 533, 534, 535, 536, 537, 538, 541, 542, 543, 544, 545, 548, 551, 552, 558, 559, 564, 565, 566, 567, 568, 569, 570, 571, 574, 575, 595, 596, 616, 617, 629, 630, 643, 646, 647, 650, 660, 661, 666, 667, 674, 679, 680, 681, 685, 686, 687, 688, 692, 694, 695, 699, 700, 701, 704, 707, 712, 714, 715, 717, 718, 719, 720, 721, 726, 728, 729, 733, 734, 735, 736, 737, 738, 741, 744, 745, 746, 750, 751, 755, 757, 758, 759, 760, 761, 762, 763, 767, 768, 770, 772, 773, 777], "excluded_lines": [], "start_line": 383}, "simulate_ai_conversion.mirror_dict_from_job": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [424], "excluded_lines": [], "start_line": 421}, "call_ai_engine_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 55, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [782, 783, 784, 785, 787, 807, 809, 810, 811, 814, 817, 818, 820, 826, 828, 830, 831, 836, 837, 840, 841, 842, 845, 847, 848, 850, 853, 854, 855, 856, 857, 858, 859, 862, 863, 864, 867, 868, 869, 871, 873, 874, 875, 877, 878, 880, 882, 883, 885, 887, 888, 889, 890, 891, 892], "excluded_lines": [], "start_line": 780}, "call_ai_engine_conversion.mirror_dict_from_job": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [789], "excluded_lines": [], "start_line": 787}, "start_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [908, 909, 911, 913, 915, 916, 918, 919, 920, 921, 923, 929, 938, 940, 941, 945, 958, 961, 962, 965, 967], "excluded_lines": [], "start_line": 897}, "get_conversion_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [992, 993, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1017, 1018, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1060, 1073, 1075], "excluded_lines": [], "start_line": 980}, "list_conversions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1105, 1118, 1119, 1130], "excluded_lines": [], "start_line": 1087}, "cancel_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1165, 1166, 1167, 1168], "excluded_lines": [], "start_line": 1134}, "download_converted_mod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1186, 1188, 1189, 1191, 1192, 1197, 1199, 1206, 1207, 1209, 1211, 1214, 1215, 1217], "excluded_lines": [], "start_line": 1173}, "try_ai_engine_or_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1241, 1243, 1244, 1245, 1246, 1247, 1248, 1250], "excluded_lines": [], "start_line": 1239}, "get_conversion_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1270, 1275, 1276], "excluded_lines": [], "start_line": 1259}, "get_conversion_report_prd": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1295, 1300, 1301], "excluded_lines": [], "start_line": 1284}, "read_addon_details": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1314, 1315, 1316, 1317], "excluded_lines": [], "start_line": 1310}, "upsert_addon_details": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1336, 1337, 1338, 1339], "excluded_lines": [], "start_line": 1325}, "create_addon_asset_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1360, 1363, 1364, 1366, 1367, 1370, 1371, 1372, 1375, 1376, 1377, 1380], "excluded_lines": [], "start_line": 1350}, "get_addon_asset_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1396, 1397, 1398, 1402, 1404, 1405, 1406, 1408], "excluded_lines": [], "start_line": 1388}, "update_addon_asset_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1430, 1431, 1432, 1436, 1437, 1438, 1439, 1440, 1444, 1445, 1446], "excluded_lines": [], "start_line": 1420}, "delete_addon_asset_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1459, 1460, 1461, 1465, 1466, 1467, 1471], "excluded_lines": [], "start_line": 1450}, "export_addon_mcaddon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1483, 1484, 1485, 1487, 1490, 1493, 1494, 1495, 1498, 1499, 1500, 1501, 1503], "excluded_lines": [], "start_line": 1479}, "metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1516], "excluded_lines": [], "start_line": 1512}, "": {"executed_lines": [1, 2, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 48, 49, 52, 70, 73, 77, 78, 81, 82, 84, 87, 89, 90, 91, 94, 97, 98, 114, 117, 120, 161, 173, 178, 181, 182, 185, 186, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 219, 223, 227, 229, 230, 231, 234, 236, 237, 241, 242, 246, 249, 250, 251, 255, 256, 259, 260, 263, 266, 267, 268, 269, 272, 275, 276, 277, 278, 279, 280, 281, 284, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 303, 304, 305, 309, 310, 320, 321, 383, 780, 896, 897, 975, 980, 1086, 1087, 1133, 1134, 1172, 1173, 1230, 1239, 1254, 1259, 1279, 1284, 1305, 1310, 1320, 1325, 1345, 1350, 1383, 1388, 1415, 1420, 1449, 1450, 1474, 1479, 1511, 1512], "summary": {"covered_lines": 160, "num_statements": 163, "percent_covered": 98.15950920245399, "percent_covered_display": "98", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 98.15950920245399, "percent_statements_covered_display": "98"}, "missing_lines": [174, 175, 1231], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239, 243], "excluded_lines": [], "start_line": 223}, "UploadResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246}, "ConversionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263}, "ConversionStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "ConversionJob": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "HealthResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "": {"executed_lines": [1, 2, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 40, 41, 42, 48, 49, 52, 70, 73, 77, 78, 81, 82, 84, 87, 89, 90, 91, 94, 97, 98, 100, 101, 104, 106, 107, 108, 110, 114, 117, 120, 161, 173, 178, 181, 182, 185, 186, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 216, 219, 223, 227, 229, 230, 231, 234, 236, 237, 241, 242, 246, 249, 250, 251, 255, 256, 259, 260, 263, 266, 267, 268, 269, 272, 275, 276, 277, 278, 279, 280, 281, 284, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 303, 304, 305, 309, 310, 320, 321, 383, 780, 896, 897, 975, 980, 1086, 1087, 1133, 1134, 1172, 1173, 1230, 1239, 1254, 1259, 1279, 1284, 1305, 1310, 1320, 1325, 1345, 1350, 1383, 1388, 1415, 1420, 1449, 1450, 1474, 1479, 1511, 1512], "summary": {"covered_lines": 167, "num_statements": 615, "percent_covered": 27.15447154471545, "percent_covered_display": "27", "missing_lines": 448, "excluded_lines": 0, "percent_statements_covered": 27.15447154471545, "percent_statements_covered_display": "27"}, "missing_lines": [102, 103, 174, 175, 189, 190, 191, 193, 194, 312, 329, 330, 333, 339, 340, 341, 342, 343, 349, 350, 351, 354, 355, 356, 357, 358, 359, 360, 364, 365, 367, 369, 371, 384, 386, 389, 399, 400, 402, 403, 404, 405, 407, 408, 409, 410, 411, 412, 414, 419, 421, 424, 442, 444, 449, 450, 453, 454, 459, 460, 461, 462, 463, 464, 465, 468, 473, 474, 480, 481, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 500, 505, 506, 512, 513, 518, 523, 524, 527, 528, 533, 534, 535, 536, 537, 538, 541, 542, 543, 544, 545, 548, 551, 552, 558, 559, 564, 565, 566, 567, 568, 569, 570, 571, 574, 575, 595, 596, 616, 617, 629, 630, 643, 646, 647, 650, 660, 661, 666, 667, 674, 679, 680, 681, 685, 686, 687, 688, 692, 694, 695, 699, 700, 701, 704, 707, 712, 714, 715, 717, 718, 719, 720, 721, 726, 728, 729, 733, 734, 735, 736, 737, 738, 741, 744, 745, 746, 750, 751, 755, 757, 758, 759, 760, 761, 762, 763, 767, 768, 770, 772, 773, 777, 782, 783, 784, 785, 787, 789, 807, 809, 810, 811, 814, 817, 818, 820, 826, 828, 830, 831, 836, 837, 840, 841, 842, 845, 847, 848, 850, 853, 854, 855, 856, 857, 858, 859, 862, 863, 864, 867, 868, 869, 871, 873, 874, 875, 877, 878, 880, 882, 883, 885, 887, 888, 889, 890, 891, 892, 908, 909, 911, 913, 915, 916, 918, 919, 920, 921, 923, 929, 938, 940, 941, 945, 958, 961, 962, 965, 967, 992, 993, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1014, 1015, 1017, 1018, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1060, 1073, 1075, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1105, 1118, 1119, 1130, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1165, 1166, 1167, 1168, 1186, 1188, 1189, 1191, 1192, 1197, 1199, 1206, 1207, 1209, 1211, 1214, 1215, 1217, 1231, 1241, 1243, 1244, 1245, 1246, 1247, 1248, 1250, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1270, 1275, 1276, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1295, 1300, 1301, 1314, 1315, 1316, 1317, 1336, 1337, 1338, 1339, 1360, 1363, 1364, 1366, 1367, 1370, 1371, 1372, 1375, 1376, 1377, 1380, 1396, 1397, 1398, 1402, 1404, 1405, 1406, 1408, 1430, 1431, 1432, 1436, 1437, 1438, 1439, 1440, 1444, 1445, 1446, 1459, 1460, 1461, 1465, 1466, 1467, 1471, 1483, 1484, 1485, 1487, 1490, 1493, 1494, 1495, 1498, 1499, 1500, 1501, 1503, 1516], "excluded_lines": [], "start_line": 1}}}, "src/models/__init__.py": {"executed_lines": [2, 13], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [2, 13], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 13], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/addon_models.py": {"executed_lines": [1, 2, 3, 4, 8, 9, 10, 12, 16, 17, 20, 21, 24, 25, 28, 29, 30, 34, 35, 38, 39, 42, 43, 46, 47, 48, 52, 53, 54, 55, 58, 59, 62, 63, 66, 67, 68, 72, 73, 74, 77, 78, 81, 82, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 106, 107, 108, 109, 113, 114, 118, 119, 120, 121, 127, 128, 129, 131, 132, 133, 135, 154, 155, 156, 158], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 8, 9, 10, 12, 16, 17, 20, 21, 24, 25, 28, 29, 30, 34, 35, 38, 39, 42, 43, 46, 47, 48, 52, 53, 54, 55, 58, 59, 62, 63, 66, 67, 68, 72, 73, 74, 77, 78, 81, 82, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 106, 107, 108, 109, 113, 114, 118, 119, 120, 121, 127, 128, 129, 131, 132, 133, 135, 154, 155, 156, 158], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TimestampsModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "AddonBehaviorBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "AddonBehaviorCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "AddonBehaviorUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "AddonBehavior": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "AddonRecipeBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "AddonRecipeCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "AddonRecipeUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "AddonRecipe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "AddonAssetBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "AddonAssetCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "AddonAssetUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "AddonAsset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "AddonBlockBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "AddonBlockCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "AddonBlockUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "AddonBlock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "AddonBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "AddonCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "AddonUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "Addon": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "AddonDetails": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "AddonDataUpload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "AddonResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "": {"executed_lines": [1, 2, 3, 4, 8, 9, 10, 12, 16, 17, 20, 21, 24, 25, 28, 29, 30, 34, 35, 38, 39, 42, 43, 46, 47, 48, 52, 53, 54, 55, 58, 59, 62, 63, 66, 67, 68, 72, 73, 74, 77, 78, 81, 82, 87, 88, 89, 90, 94, 95, 96, 97, 100, 101, 102, 103, 106, 107, 108, 109, 113, 114, 118, 119, 120, 121, 127, 128, 129, 131, 132, 133, 135, 154, 155, 156, 158], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/build_performance_models.py": {"executed_lines": [11, 12, 13, 14, 17, 20, 21, 22, 23, 24, 28, 29, 31, 33, 34, 35, 36, 37, 40, 43, 44, 45, 46, 47, 48, 51, 54, 57, 60, 61, 66, 69, 72, 73, 76, 80, 81, 82, 85, 86, 89, 92, 95, 96, 97, 98, 99, 100, 101, 102, 108, 111, 112, 113, 114, 117, 120, 121, 122, 123, 126, 129, 130, 131, 132, 135, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 161, 162, 163, 164, 165, 166, 167, 170, 173, 174, 175, 176, 177, 178, 179, 180, 183, 186, 187], "summary": {"covered_lines": 100, "num_statements": 100, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"BuildStageTiming.complete": {"executed_lines": [33, 34, 35, 36, 37], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [11, 12, 13, 14, 17, 20, 21, 22, 23, 24, 28, 29, 31, 40, 43, 44, 45, 46, 47, 48, 51, 54, 57, 60, 61, 66, 69, 72, 73, 76, 80, 81, 82, 85, 86, 89, 92, 95, 96, 97, 98, 99, 100, 101, 102, 108, 111, 112, 113, 114, 117, 120, 121, 122, 123, 126, 129, 130, 131, 132, 135, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 161, 162, 163, 164, 165, 166, 167, 170, 173, 174, 175, 176, 177, 178, 179, 180, 183, 186, 187], "summary": {"covered_lines": 95, "num_statements": 95, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"BuildStageTiming": {"executed_lines": [33, 34, 35, 36, 37], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "BuildResourceUsage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "BuildPerformanceMetrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "BuildPerformanceSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "BuildPerformanceStartRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "BuildPerformanceStartResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "BuildStageUpdateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "BuildPerformanceEndRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "BuildPerformanceResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "BuildPerformanceSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 158}, "BuildPerformanceStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "": {"executed_lines": [11, 12, 13, 14, 17, 20, 21, 22, 23, 24, 28, 29, 31, 40, 43, 44, 45, 46, 47, 48, 51, 54, 57, 60, 61, 66, 69, 72, 73, 76, 80, 81, 82, 85, 86, 89, 92, 95, 96, 97, 98, 99, 100, 101, 102, 108, 111, 112, 113, 114, 117, 120, 121, 122, 123, 126, 129, 130, 131, 132, 135, 138, 139, 140, 143, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 158, 161, 162, 163, 164, 165, 166, 167, 170, 173, 174, 175, 176, 177, 178, 179, 180, 183, 186, 187], "summary": {"covered_lines": 95, "num_statements": 95, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/cache_models.py": {"executed_lines": [1, 4, 5, 6, 7, 8], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 6, 7, 8], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CacheStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4, 5, 6, 7, 8], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/conversion_mode.py": {"executed_lines": [10, 11, 12, 13, 14, 17, 20, 21, 23, 24, 26, 27, 29, 30, 33, 36, 37, 38, 39, 40, 41, 42, 45, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 79, 80, 83, 86, 87, 88, 89, 92, 95, 96, 97, 98, 99, 100, 101, 103, 106, 109, 110, 111, 112, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 149, 150, 151, 152, 153, 157, 204], "summary": {"covered_lines": 100, "num_statements": 100, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [10, 11, 12, 13, 14, 17, 20, 21, 23, 24, 26, 27, 29, 30, 33, 36, 37, 38, 39, 40, 41, 42, 45, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 79, 80, 83, 86, 87, 88, 89, 92, 95, 96, 97, 98, 99, 100, 101, 103, 106, 109, 110, 111, 112, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 149, 150, 151, 152, 153, 157, 204], "summary": {"covered_lines": 100, "num_statements": 100, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ModeClassificationRule": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ComplexFeature": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "ModFeatures": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "ClassificationConfidence": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "ModeClassificationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "ModeClassificationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "ModeClassificationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "ConversionSettings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "ModeSpecificPipelineConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "": {"executed_lines": [10, 11, 12, 13, 14, 17, 20, 21, 23, 24, 26, 27, 29, 30, 33, 36, 37, 38, 39, 40, 41, 42, 45, 48, 49, 50, 51, 52, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 79, 80, 83, 86, 87, 88, 89, 92, 95, 96, 97, 98, 99, 100, 101, 103, 106, 109, 110, 111, 112, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 145, 148, 149, 150, 151, 152, 153, 157, 204], "summary": {"covered_lines": 100, "num_statements": 100, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/embedding_models.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 29, 32, 35, 38, 39, 45, 48, 49, 50, 51, 52, 53, 56, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 74, 76, 79, 82, 83, 84, 85, 86, 92, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 29, 32, 35, 38, 39, 45, 48, 49, 50, 51, 52, 53, 56, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 74, 76, 79, 82, 83, 84, 85, 86, 92, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DocumentEmbeddingCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "DocumentEmbeddingResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "EmbeddingSearchQuery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "EmbeddingSearchResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "EmbeddingGenerateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "IndexDocumentRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "IndexDocumentResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "ChunkResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "DocumentWithChunksResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "EnhancedSearchQuery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "EnhancedSearchResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "EnhancedSearchResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 29, 32, 35, 38, 39, 45, 48, 49, 50, 51, 52, 53, 56, 59, 60, 61, 64, 67, 68, 69, 70, 71, 72, 73, 74, 76, 79, 82, 83, 84, 85, 86, 92, 95, 96, 97, 98, 99, 100, 101, 102, 105, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/models/performance_models.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PerformanceBenchmark": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "PerformanceMetric": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "BenchmarkRunRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "BenchmarkRunResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "BenchmarkStatusResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "BenchmarkReportResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "ScenarioDefinition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "CustomScenarioRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 41, 42, 43, 44, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/schemas/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/schemas/report_types.py": {"executed_lines": [6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 29, 30, 33, 34, 35, 36, 37, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 60, 61, 62, 63, 64, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 95, 96, 99, 100, 101, 102, 105, 106, 107, 109, 110, 112, 116, 117, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 134, 135, 148, 149, 152, 153, 154, 155, 156, 158, 159, 161, 163, 164, 167, 181, 182, 185, 186, 187, 188, 189, 192, 193, 194, 196, 197, 199, 201, 205, 206, 209, 210, 211, 212, 213, 216, 217, 218, 220, 221, 222, 227, 228, 229, 230, 232, 234, 291, 293, 297, 298, 299, 300, 301, 302, 305, 306, 307, 308, 309, 310, 311, 314, 315, 316, 317, 318, 319, 320, 323, 324, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 341, 343, 344, 346, 355, 357, 358, 360, 361, 362, 364, 370], "summary": {"covered_lines": 175, "num_statements": 187, "percent_covered": 93.58288770053476, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 93.58288770053476, "percent_statements_covered_display": "94"}, "missing_lines": [111, 113, 132, 160, 162, 165, 169, 170, 171, 198, 200, 202], "excluded_lines": [], "functions": {"SummaryReport.__post_init__": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "FeatureAnalysisItem.to_dict": {"executed_lines": [82], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "FeatureAnalysis.__post_init__": {"executed_lines": [110, 112], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [111, 113], "excluded_lines": [], "start_line": 109}, "AssumptionReportItem.__post_init__": {"executed_lines": [131], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [132], "excluded_lines": [], "start_line": 130}, "AssumptionReportItem.to_dict": {"executed_lines": [135], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "AssumptionsReport.__post_init__": {"executed_lines": [159, 161, 163, 164], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [160, 162, 165], "excluded_lines": [], "start_line": 158}, "AssumptionsReport.add_what_changed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169, 170, 171], "excluded_lines": [], "start_line": 167}, "DeveloperLog.__post_init__": {"executed_lines": [197, 199, 201], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [198, 200, 202], "excluded_lines": [], "start_line": 196}, "InteractiveReport.__post_init__": {"executed_lines": [221, 222, 227, 228, 229, 230], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 220}, "InteractiveReport.to_dict": {"executed_lines": [234], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "InteractiveReport.to_json": {"executed_lines": [293], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "create_report_metadata": {"executed_lines": [343, 344, 346], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "calculate_quality_score": {"executed_lines": [357, 358, 360, 361, 362, 364, 370], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 29, 30, 33, 34, 35, 36, 37, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 95, 96, 99, 100, 101, 102, 105, 106, 107, 109, 116, 117, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 134, 148, 149, 152, 153, 154, 155, 156, 158, 167, 181, 182, 185, 186, 187, 188, 189, 192, 193, 194, 196, 205, 206, 209, 210, 211, 212, 213, 216, 217, 218, 220, 232, 291, 297, 298, 299, 300, 301, 302, 305, 306, 307, 308, 309, 310, 311, 314, 315, 316, 317, 318, 319, 320, 323, 324, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 341, 355], "summary": {"covered_lines": 141, "num_statements": 141, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "ImpactLevel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "ReportMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "SummaryReport": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "FeatureAnalysisItem": {"executed_lines": [82], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "FeatureAnalysis": {"executed_lines": [110, 112], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [111, 113], "excluded_lines": [], "start_line": 96}, "AssumptionReportItem": {"executed_lines": [131, 135], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [132], "excluded_lines": [], "start_line": 117}, "AssumptionsReport": {"executed_lines": [159, 161, 163, 164], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [160, 162, 165, 169, 170, 171], "excluded_lines": [], "start_line": 149}, "DeveloperLog": {"executed_lines": [197, 199, 201], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [198, 200, 202], "excluded_lines": [], "start_line": 182}, "InteractiveReport": {"executed_lines": [221, 222, 227, 228, 229, 230, 234, 293], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "ModConversionStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "SmartAssumption": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "FeatureConversionDetail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "AssumptionDetail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "LogEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "": {"executed_lines": [6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 29, 30, 33, 34, 35, 36, 37, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 60, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 95, 96, 99, 100, 101, 102, 105, 106, 107, 109, 116, 117, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 134, 148, 149, 152, 153, 154, 155, 156, 158, 167, 181, 182, 185, 186, 187, 188, 189, 192, 193, 194, 196, 205, 206, 209, 210, 211, 212, 213, 216, 217, 218, 220, 232, 291, 297, 298, 299, 300, 301, 302, 305, 306, 307, 308, 309, 310, 311, 314, 315, 316, 317, 318, 319, 320, 323, 324, 325, 326, 327, 328, 329, 330, 333, 334, 335, 336, 337, 341, 343, 344, 346, 355, 357, 358, 360, 361, 362, 364, 370], "summary": {"covered_lines": 151, "num_statements": 151, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/security/__init__.py": {"executed_lines": [14, 23, 29, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [14, 23, 29, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [14, 23, 29, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/security/auth.py": {"executed_lines": [10, 11, 12, 14, 15, 17, 20, 23, 24, 26, 27, 28, 31, 41, 44, 55, 56, 62, 76, 77, 78, 80, 82, 89, 90, 92, 95, 106, 107, 110, 112, 119, 122, 133, 134, 135, 137, 138, 140, 141, 142, 144, 145, 146, 149, 159, 160, 161, 162, 163, 164, 165, 166, 169, 176, 179, 186, 189, 198, 199, 202, 212, 214], "summary": {"covered_lines": 63, "num_statements": 67, "percent_covered": 94.02985074626865, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.02985074626865, "percent_statements_covered_display": "94"}, "missing_lines": [25, 57, 59, 108], "excluded_lines": [], "functions": {"hash_password": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "verify_password": {"executed_lines": [55, 56], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [57, 59], "excluded_lines": [], "start_line": 44}, "create_access_token": {"executed_lines": [76, 77, 78, 80, 82, 89, 90, 92], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "create_refresh_token": {"executed_lines": [106, 107, 110, 112, 119], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [108], "excluded_lines": [], "start_line": 95}, "verify_token": {"executed_lines": [133, 134, 135, 137, 138, 140, 141, 142, 144, 145, 146], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "get_token_expiry": {"executed_lines": [159, 160, 161, 162, 163, 164, 165, 166], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "generate_verification_token": {"executed_lines": [176], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "generate_reset_token": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "generate_api_key": {"executed_lines": [198, 199], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "hash_api_key": {"executed_lines": [212, 214], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "": {"executed_lines": [10, 11, 12, 14, 15, 17, 20, 23, 24, 26, 27, 28, 31, 44, 62, 95, 122, 149, 169, 179, 189, 202], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [25], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [10, 11, 12, 14, 15, 17, 20, 23, 24, 26, 27, 28, 31, 41, 44, 55, 56, 62, 76, 77, 78, 80, 82, 89, 90, 92, 95, 106, 107, 110, 112, 119, 122, 133, 134, 135, 137, 138, 140, 141, 142, 144, 145, 146, 149, 159, 160, 161, 162, 163, 164, 165, 166, 169, 176, 179, 186, 189, 198, 199, 202, 212, 214], "summary": {"covered_lines": 63, "num_statements": 67, "percent_covered": 94.02985074626865, "percent_covered_display": "94", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.02985074626865, "percent_statements_covered_display": "94"}, "missing_lines": [25, 57, 59, 108], "excluded_lines": [], "start_line": 1}}}, "src/security/file_security.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 45, 46, 49, 50, 51, 52, 53, 56, 57, 60, 61, 62, 63, 64, 65, 67, 68, 70, 72, 73, 75, 77, 85, 94, 95, 98, 101, 104, 107, 108, 109, 112, 115, 116, 117, 120, 123, 124, 125, 128, 129, 133, 134, 135, 138, 139, 142, 143, 157, 158, 161, 166, 179, 192, 193, 194, 196, 198, 200, 214, 216, 217, 222, 225, 226, 229, 231, 232, 233, 235, 238, 247, 249, 263, 266, 268, 270, 271, 272, 274, 276, 278, 279, 280, 282, 283, 285, 287, 294, 296, 298, 300, 301, 302, 307, 308, 310, 312, 313, 314, 316, 317, 319, 320, 321, 322, 326, 327, 328, 331, 336, 352, 353, 354, 355, 356, 359, 360, 369, 371, 372, 374, 376, 377, 385, 386, 387, 395, 396, 399, 400, 412, 413, 414, 415, 428, 429, 441, 451, 452, 454, 457, 469, 470, 471, 472, 479, 480, 493, 495, 547, 550, 553, 554, 557, 558, 561, 563, 565, 575, 576, 578, 585, 587, 597, 599, 600, 603, 604, 607, 610, 611, 616, 617, 618, 628, 643, 646, 647, 653, 656, 657, 664, 668, 679, 680], "summary": {"covered_lines": 210, "num_statements": 247, "percent_covered": 85.02024291497976, "percent_covered_display": "85", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 85.02024291497976, "percent_statements_covered_display": "85"}, "missing_lines": [234, 241, 323, 325, 329, 332, 333, 334, 430, 458, 485, 486, 487, 503, 504, 505, 506, 507, 509, 510, 516, 518, 520, 521, 529, 530, 537, 538, 539, 545, 605, 612, 613, 625, 626, 658, 659], "excluded_lines": [], "functions": {"SecurityScanResult.has_critical_threats": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "SecurityScanResult.has_high_threats": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "SecurityScanResult.add_threat": {"executed_lines": [85, 94, 95], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "ZipBombDetectedError.__init__": {"executed_lines": [108, 109], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "PathTraversalDetectedError.__init__": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "ResourceLimitExceededError.__init__": {"executed_lines": [124, 125], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "FileSecurityScanner.__init__": {"executed_lines": [198], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "FileSecurityScanner.scan_file": {"executed_lines": [214, 216, 217, 222, 225, 226, 229, 231, 232, 233, 235, 238, 247], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87"}, "missing_lines": [234, 241], "excluded_lines": [], "start_line": 200}, "FileSecurityScanner.scan_upload": {"executed_lines": [263, 266, 268, 270, 271, 272, 274, 276, 278, 279, 280, 282, 283, 285, 287, 294, 296], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249}, "FileSecurityScanner._check_extension": {"executed_lines": [300, 301, 302, 307, 308], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "FileSecurityScanner._detect_file_type": {"executed_lines": [312, 313, 314, 316, 317, 319, 320, 321, 322, 326, 327, 328, 331], "summary": {"covered_lines": 13, "num_statements": 19, "percent_covered": 68.42105263157895, "percent_covered_display": "68", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 68.42105263157895, "percent_statements_covered_display": "68"}, "missing_lines": [323, 325, 329, 332, 333, 334], "excluded_lines": [], "start_line": 310}, "FileSecurityScanner._scan_zip_archive": {"executed_lines": [352, 353, 354, 355, 356, 359, 360, 369, 371, 372, 374, 376, 377, 385, 386, 387, 395, 396, 399, 400, 412, 413, 414, 415, 428, 429, 441, 451, 452, 454, 457, 469, 470, 471, 472, 479, 480, 493], "summary": {"covered_lines": 38, "num_statements": 43, "percent_covered": 88.37209302325581, "percent_covered_display": "88", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.37209302325581, "percent_statements_covered_display": "88"}, "missing_lines": [430, 458, 485, 486, 487], "excluded_lines": [], "start_line": 336}, "FileSecurityScanner._scan_tar_archive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [503, 504, 505, 506, 507, 509, 510, 516, 518, 520, 521, 529, 530, 537, 538, 539, 545], "excluded_lines": [], "start_line": 495}, "FileSecurityScanner._is_path_traversal": {"executed_lines": [550, 553, 554, 557, 558, 561], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 547}, "FileSecurityScanner._is_nested_archive": {"executed_lines": [565, 575, 576], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 563}, "FileSecurityScanner._scan_member_content": {"executed_lines": [585, 587, 597, 599, 600, 603, 604, 607, 610, 611, 616, 617, 618], "summary": {"covered_lines": 13, "num_statements": 18, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 72.22222222222223, "percent_statements_covered_display": "72"}, "missing_lines": [605, 612, 613, 625, 626], "excluded_lines": [], "start_line": 578}, "FileSecurityScanner.validate_extraction_path": {"executed_lines": [643, 646, 647, 653, 656, 657, 664], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [658, 659], "excluded_lines": [], "start_line": 628}, "scan_archive": {"executed_lines": [679, 680], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 45, 46, 49, 50, 51, 52, 53, 56, 57, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 77, 98, 101, 104, 107, 112, 115, 120, 123, 128, 129, 133, 134, 135, 138, 139, 142, 143, 157, 158, 161, 166, 179, 192, 193, 194, 196, 200, 249, 298, 310, 336, 495, 547, 563, 578, 628, 668], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SecurityThreatType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "SecuritySeverity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "SecurityThreat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "SecurityScanResult": {"executed_lines": [70, 75, 85, 94, 95], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "SecurityError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "ZipBombDetectedError": {"executed_lines": [108, 109], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "PathTraversalDetectedError": {"executed_lines": [116, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "ResourceLimitExceededError": {"executed_lines": [124, 125], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "SecurityConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "FileSecurityScanner": {"executed_lines": [198, 214, 216, 217, 222, 225, 226, 229, 231, 232, 233, 235, 238, 247, 263, 266, 268, 270, 271, 272, 274, 276, 278, 279, 280, 282, 283, 285, 287, 294, 296, 300, 301, 302, 307, 308, 312, 313, 314, 316, 317, 319, 320, 321, 322, 326, 327, 328, 331, 352, 353, 354, 355, 356, 359, 360, 369, 371, 372, 374, 376, 377, 385, 386, 387, 395, 396, 399, 400, 412, 413, 414, 415, 428, 429, 441, 451, 452, 454, 457, 469, 470, 471, 472, 479, 480, 493, 550, 553, 554, 557, 558, 561, 565, 575, 576, 585, 587, 597, 599, 600, 603, 604, 607, 610, 611, 616, 617, 618, 643, 646, 647, 653, 656, 657, 664], "summary": {"covered_lines": 116, "num_statements": 153, "percent_covered": 75.81699346405229, "percent_covered_display": "76", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 75.81699346405229, "percent_statements_covered_display": "76"}, "missing_lines": [234, 241, 323, 325, 329, 332, 333, 334, 430, 458, 485, 486, 487, 503, 504, 505, 506, 507, 509, 510, 516, 518, 520, 521, 529, 530, 537, 538, 539, 545, 605, 612, 613, 625, 626, 658, 659], "excluded_lines": [], "start_line": 179}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 23, 26, 27, 28, 29, 30, 31, 32, 33, 36, 39, 40, 41, 42, 45, 46, 49, 50, 51, 52, 53, 56, 57, 60, 61, 62, 63, 64, 65, 67, 68, 72, 73, 77, 98, 101, 104, 107, 112, 115, 120, 123, 128, 129, 133, 134, 135, 138, 139, 142, 143, 157, 158, 161, 166, 179, 192, 193, 194, 196, 200, 249, 298, 310, 336, 495, 547, 563, 578, 628, 668, 679, 680], "summary": {"covered_lines": 83, "num_statements": 83, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/security/resource_limits.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 29, 32, 35, 38, 39, 42, 45, 48, 49, 52, 53, 54, 55, 56, 57, 59, 61, 71, 74, 75, 76, 77, 78, 83, 94, 96, 97, 98, 99, 100, 105, 112, 113, 114, 116, 123, 124, 125, 126, 127, 129, 136, 139, 140, 145, 146, 147, 152, 153, 158, 159, 160, 163, 164, 168, 170, 177, 180, 181, 184, 185, 188, 189, 196, 197, 199, 210, 211, 212, 213, 218, 219, 232, 234, 235, 236, 241, 242, 243, 244, 249, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 263, 264, 277, 279, 283, 284, 286, 287, 288, 289, 291, 292, 293, 301, 303, 304, 306, 307, 316, 318, 319, 321, 322, 323, 324, 325, 329, 331, 333, 334, 336, 337, 345, 347, 348, 349, 354, 359, 361, 362, 364, 374, 375, 376, 377, 378, 379, 381, 382, 384, 385, 387, 396, 397, 398, 402, 405, 408, 409, 410, 413, 416], "summary": {"covered_lines": 166, "num_statements": 199, "percent_covered": 83.41708542713567, "percent_covered_display": "83", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 83.41708542713567, "percent_statements_covered_display": "83"}, "missing_lines": [141, 142, 148, 149, 154, 155, 165, 166, 214, 215, 216, 280, 295, 296, 297, 298, 299, 308, 310, 311, 312, 313, 314, 326, 327, 338, 340, 341, 342, 343, 350, 351, 383], "excluded_lines": [], "functions": {"ResourceUsage.to_dict": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "ResourceLimitExceeded.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "ResourceLimiter.__init__": {"executed_lines": [96, 97, 98, 99, 100], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "ResourceLimiter.start_tracking": {"executed_lines": [112, 113, 114], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "ResourceLimiter.stop_tracking": {"executed_lines": [123, 124, 125, 126, 127], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "ResourceLimiter.get_current_usage": {"executed_lines": [136, 139, 140, 145, 146, 147, 152, 153, 158, 159, 160, 163, 164, 168], "summary": {"covered_lines": 14, "num_statements": 22, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [141, 142, 148, 149, 154, 155, 165, 166], "excluded_lines": [], "start_line": 129}, "ResourceLimiter.check_limits": {"executed_lines": [177, 180, 181, 184, 185, 188, 189, 196, 197], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "ResourceLimiter.check_available_disk_space": {"executed_lines": [210, 211, 212, 213], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [214, 215, 216], "excluded_lines": [], "start_line": 199}, "ResourceLimiter.track_operation": {"executed_lines": [232, 234, 235, 236, 241, 242, 243, 244, 249, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219}, "ResourceLimiter.time_limit": {"executed_lines": [277, 279, 283, 284, 286, 287, 288, 289, 291, 292, 293], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "69"}, "missing_lines": [295, 296, 297, 298, 299], "excluded_lines": [], "start_line": 264}, "ResourceLimiter.time_limit.timeout_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [280], "excluded_lines": [], "start_line": 279}, "ResourceLimiter._get_memory_usage_mb": {"executed_lines": [303, 304, 306, 307], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [308, 310, 311, 312, 313, 314], "excluded_lines": [], "start_line": 301}, "ResourceLimiter._get_directory_size_mb": {"executed_lines": [318, 319, 321, 322, 323, 324, 325, 329], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [326, 327], "excluded_lines": [], "start_line": 316}, "ResourceLimiter._get_open_file_count": {"executed_lines": [333, 334, 336, 337], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [338, 340, 341, 342, 343], "excluded_lines": [], "start_line": 331}, "ResourceLimiter._get_cpu_time": {"executed_lines": [347, 348, 349], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [350, 351], "excluded_lines": [], "start_line": 345}, "DiskSpaceMonitor.__init__": {"executed_lines": [361, 362], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 359}, "DiskSpaceMonitor.check_disk_space": {"executed_lines": [374, 375, 376, 377, 378, 379, 381, 382, 384, 385, 387, 396, 397, 398], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [383], "excluded_lines": [], "start_line": 364}, "get_resource_limiter": {"executed_lines": [408, 409, 410], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "reset_resource_limiter": {"executed_lines": [416], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 413}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 29, 32, 35, 38, 39, 42, 45, 48, 49, 52, 53, 54, 55, 56, 57, 59, 71, 74, 83, 94, 105, 116, 129, 170, 199, 218, 219, 263, 264, 301, 316, 331, 345, 354, 359, 364, 402, 405, 413], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceLimits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ResourceUsage": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "ResourceLimitExceeded": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "ResourceLimiter": {"executed_lines": [96, 97, 98, 99, 100, 112, 113, 114, 123, 124, 125, 126, 127, 136, 139, 140, 145, 146, 147, 152, 153, 158, 159, 160, 163, 164, 168, 177, 180, 181, 184, 185, 188, 189, 196, 197, 210, 211, 212, 213, 232, 234, 235, 236, 241, 242, 243, 244, 249, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 277, 279, 283, 284, 286, 287, 288, 289, 291, 292, 293, 303, 304, 306, 307, 318, 319, 321, 322, 323, 324, 325, 329, 333, 334, 336, 337, 347, 348, 349], "summary": {"covered_lines": 89, "num_statements": 121, "percent_covered": 73.55371900826447, "percent_covered_display": "74", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 73.55371900826447, "percent_statements_covered_display": "74"}, "missing_lines": [141, 142, 148, 149, 154, 155, 165, 166, 214, 215, 216, 280, 295, 296, 297, 298, 299, 308, 310, 311, 312, 313, 314, 326, 327, 338, 340, 341, 342, 343, 350, 351], "excluded_lines": [], "start_line": 83}, "DiskSpaceMonitor": {"executed_lines": [361, 362, 374, 375, 376, 377, 378, 379, 381, 382, 384, 385, 387, 396, 397, 398], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94"}, "missing_lines": [383], "excluded_lines": [], "start_line": 354}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 29, 32, 35, 38, 39, 42, 45, 48, 49, 52, 53, 54, 55, 56, 57, 59, 71, 74, 83, 94, 105, 116, 129, 170, 199, 218, 219, 263, 264, 301, 316, 331, 345, 354, 359, 364, 402, 405, 408, 409, 410, 413, 416], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/security/temp_file_manager.py": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 34, 37, 40, 43, 46, 49, 52, 55, 56, 59, 60, 61, 62, 63, 65, 67, 76, 88, 90, 93, 94, 96, 99, 102, 103, 106, 107, 110, 111, 113, 115, 116, 117, 118, 119, 121, 123, 124, 125, 126, 128, 173, 228, 229, 242, 243, 244, 246, 248, 249, 266, 267, 268, 270, 272, 282, 283, 284, 287, 290, 291, 293, 294, 296, 297, 298, 303, 313, 314, 315, 317, 320, 321, 323, 324, 326, 327, 328, 330, 340, 342, 344, 346, 347, 348, 349, 351, 352, 354, 355, 357, 388, 395, 397, 398, 400, 401, 402, 403, 405, 406, 408, 409, 411, 418, 420, 421, 424, 425, 428, 429, 430, 432, 434, 441, 443, 444, 446, 447, 448, 449, 451, 453, 460, 461, 462, 463, 465, 466, 468, 478, 488, 489, 491, 492, 494, 495, 497, 504, 505, 507, 509, 511, 519, 522, 525, 526, 527, 531, 536, 538], "summary": {"covered_lines": 166, "num_statements": 227, "percent_covered": 73.12775330396475, "percent_covered_display": "73", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 73.12775330396475, "percent_statements_covered_display": "73"}, "missing_lines": [142, 143, 144, 146, 147, 149, 152, 155, 156, 157, 158, 161, 162, 163, 170, 171, 193, 194, 197, 198, 199, 201, 202, 204, 207, 210, 211, 212, 213, 216, 217, 218, 225, 226, 299, 300, 301, 367, 368, 369, 371, 372, 374, 375, 376, 377, 379, 380, 383, 385, 386, 498, 499, 501, 502, 503, 512, 513, 514, 515, 533], "excluded_lines": [], "functions": {"TempFileInfo.to_dict": {"executed_lines": [67], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "SecureTempFileManager.__init__": {"executed_lines": [90, 93, 94, 96, 99, 102, 103, 106, 107, 110, 111], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "SecureTempFileManager.start_background_cleanup": {"executed_lines": [115, 116, 117, 118, 119], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "SecureTempFileManager.stop_background_cleanup": {"executed_lines": [123, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "SecureTempFileManager.create_temp_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [142, 143, 144, 146, 147, 149, 152, 155, 156, 157, 158, 161, 162, 163, 170, 171], "excluded_lines": [], "start_line": 128}, "SecureTempFileManager.create_temp_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [193, 194, 197, 198, 199, 201, 202, 204, 207, 210, 211, 212, 213, 216, 217, 218, 225, 226], "excluded_lines": [], "start_line": 173}, "SecureTempFileManager.temp_directory": {"executed_lines": [242, 243, 244, 246], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "SecureTempFileManager.temp_file": {"executed_lines": [266, 267, 268, 270], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249}, "SecureTempFileManager.cleanup_directory": {"executed_lines": [282, 283, 284, 287, 290, 291, 293, 294, 296, 297, 298], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [299, 300, 301], "excluded_lines": [], "start_line": 272}, "SecureTempFileManager.cleanup_file": {"executed_lines": [313, 314, 315, 317, 320, 321, 323, 324, 326, 327, 328], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "SecureTempFileManager.cleanup_job_files": {"executed_lines": [340, 342, 344, 346, 347, 348, 349, 351, 352, 354, 355], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "SecureTempFileManager.cleanup_old_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [367, 368, 369, 371, 372, 374, 375, 376, 377, 379, 380, 383, 385, 386], "excluded_lines": [], "start_line": 357}, "SecureTempFileManager.cleanup_all": {"executed_lines": [395, 397, 398, 400, 401, 402, 403, 405, 406, 408, 409], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388}, "SecureTempFileManager.find_orphaned_files": {"executed_lines": [418, 420, 421, 424, 425, 428, 429, 430, 432], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "SecureTempFileManager.get_total_size": {"executed_lines": [441, 443, 444, 446, 447, 448, 449, 451], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "SecureTempFileManager.get_stats": {"executed_lines": [460, 461, 462, 463, 465, 466, 468], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "SecureTempFileManager._cleanup_orphaned_files": {"executed_lines": [488, 489, 491, 492, 494, 495, 497, 504, 505, 507], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [498, 499, 501, 502, 503], "excluded_lines": [], "start_line": 478}, "SecureTempFileManager._cleanup_loop": {"executed_lines": [511], "summary": {"covered_lines": 1, "num_statements": 5, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [512, 513, 514, 515], "excluded_lines": [], "start_line": 509}, "get_temp_file_manager": {"executed_lines": [525, 526, 527], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 522}, "create_temp_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [533], "excluded_lines": [], "start_line": 531}, "cleanup_job_files": {"executed_lines": [538], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 34, 37, 40, 43, 46, 49, 52, 55, 56, 59, 60, 61, 62, 63, 65, 76, 88, 113, 121, 128, 173, 228, 229, 248, 249, 272, 303, 330, 357, 388, 411, 434, 453, 478, 509, 519, 522, 531, 536], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TempFileConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TempFileInfo": {"executed_lines": [67], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "SecureTempFileManager": {"executed_lines": [90, 93, 94, 96, 99, 102, 103, 106, 107, 110, 111, 115, 116, 117, 118, 119, 123, 124, 125, 126, 242, 243, 244, 246, 266, 267, 268, 270, 282, 283, 284, 287, 290, 291, 293, 294, 296, 297, 298, 313, 314, 315, 317, 320, 321, 323, 324, 326, 327, 328, 340, 342, 344, 346, 347, 348, 349, 351, 352, 354, 355, 395, 397, 398, 400, 401, 402, 403, 405, 406, 408, 409, 418, 420, 421, 424, 425, 428, 429, 430, 432, 441, 443, 444, 446, 447, 448, 449, 451, 460, 461, 462, 463, 465, 466, 468, 488, 489, 491, 492, 494, 495, 497, 504, 505, 507, 511], "summary": {"covered_lines": 107, "num_statements": 167, "percent_covered": 64.07185628742515, "percent_covered_display": "64", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 64.07185628742515, "percent_statements_covered_display": "64"}, "missing_lines": [142, 143, 144, 146, 147, 149, 152, 155, 156, 157, 158, 161, 162, 163, 170, 171, 193, 194, 197, 198, 199, 201, 202, 204, 207, 210, 211, 212, 213, 216, 217, 218, 225, 226, 299, 300, 301, 367, 368, 369, 371, 372, 374, 375, 376, 377, 379, 380, 383, 385, 386, 498, 499, 501, 502, 503, 512, 513, 514, 515], "excluded_lines": [], "start_line": 76}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 34, 37, 40, 43, 46, 49, 52, 55, 56, 59, 60, 61, 62, 63, 65, 76, 88, 113, 121, 128, 173, 228, 229, 248, 249, 272, 303, 330, 357, 388, 411, 434, 453, 478, 509, 519, 522, 525, 526, 527, 531, 536, 538], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 98.30508474576271, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98"}, "missing_lines": [533], "excluded_lines": [], "start_line": 1}}}, "src/services/__init__.py": {"executed_lines": [3, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/addon_exporter.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 14, 18, 19, 21, 24, 26, 27, 28, 32, 33, 34, 35, 38, 44, 70, 76, 96, 107, 109, 112, 113, 114, 115, 119, 122, 123, 130, 144, 152, 155, 158, 170, 171, 173, 175, 176, 177, 180, 181, 183, 184, 187, 193, 194, 195, 203, 208, 239, 240, 244, 246, 248, 257, 264, 266, 267, 270, 277, 279, 281, 286, 293, 297, 304, 312, 315, 316, 319, 320, 322, 324, 325, 326, 327, 330, 331, 333, 334, 336, 337, 342, 343, 345, 354, 355, 361, 362, 364, 365, 366, 369, 372, 373, 374, 380, 383, 388, 389, 390, 396, 397, 401, 403, 404, 410, 411, 434, 435, 454, 455, 471, 472, 475], "summary": {"covered_lines": 121, "num_statements": 183, "percent_covered": 66.12021857923497, "percent_covered_display": "66", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 66.12021857923497, "percent_statements_covered_display": "66"}, "missing_lines": [241, 317, 391, 392, 394, 399, 407, 412, 414, 417, 422, 424, 425, 427, 430, 431, 436, 438, 441, 446, 448, 449, 451, 456, 457, 459, 464, 466, 467, 469, 477, 478, 480, 522, 523, 524, 525, 527, 528, 530, 531, 533, 535, 539, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 554, 555, 556, 557, 558, 560, 561, 563], "excluded_lines": [], "functions": {"_sanitize_filename": {"executed_lines": [18, 19, 21, 24, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "generate_bp_manifest": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "generate_rp_manifest": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "generate_block_behavior_json": {"executed_lines": [107, 109, 112, 113, 114, 115, 119, 122, 123, 130], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "generate_rp_block_definitions_json": {"executed_lines": [152, 155, 158, 170, 171, 173, 175, 176, 177, 180, 181, 183, 184], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "generate_terrain_texture_json": {"executed_lines": [193, 194, 195, 203, 208, 239, 240, 244, 246, 248], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [241], "excluded_lines": [], "start_line": 187}, "generate_recipe_json": {"executed_lines": [264, 266, 267], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "generate_sounds_json": {"executed_lines": [277, 279, 281, 286, 293, 297], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "create_mcaddon_zip": {"executed_lines": [312, 315, 316, 319, 320, 322, 324, 325, 326, 327, 330, 331, 333, 334, 336, 337, 342, 343, 345, 354, 355, 361, 362, 364, 365, 366, 369, 372, 373, 374, 380, 383, 388, 389, 390, 396, 397, 401, 403, 404, 410, 411, 434, 435, 454, 455, 471, 472], "summary": {"covered_lines": 48, "num_statements": 77, "percent_covered": 62.33766233766234, "percent_covered_display": "62", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 62.33766233766234, "percent_statements_covered_display": "62"}, "missing_lines": [317, 391, 392, 394, 399, 407, 412, 414, 417, 422, 424, 425, 427, 430, 431, 436, 438, 441, 446, 448, 449, 451, 456, 457, 459, 464, 466, 467, 469], "excluded_lines": [], "start_line": 304}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 14, 32, 33, 34, 35, 38, 70, 96, 144, 187, 257, 270, 304, 475], "summary": {"covered_lines": 22, "num_statements": 54, "percent_covered": 40.74074074074074, "percent_covered_display": "41", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 40.74074074074074, "percent_statements_covered_display": "41"}, "missing_lines": [477, 478, 480, 522, 523, 524, 525, 527, 528, 530, 531, 533, 535, 539, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 554, 555, 556, 557, 558, 560, 561, 563], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 14, 18, 19, 21, 24, 26, 27, 28, 32, 33, 34, 35, 38, 44, 70, 76, 96, 107, 109, 112, 113, 114, 115, 119, 122, 123, 130, 144, 152, 155, 158, 170, 171, 173, 175, 176, 177, 180, 181, 183, 184, 187, 193, 194, 195, 203, 208, 239, 240, 244, 246, 248, 257, 264, 266, 267, 270, 277, 279, 281, 286, 293, 297, 304, 312, 315, 316, 319, 320, 322, 324, 325, 326, 327, 330, 331, 333, 334, 336, 337, 342, 343, 345, 354, 355, 361, 362, 364, 365, 366, 369, 372, 373, 374, 380, 383, 388, 389, 390, 396, 397, 401, 403, 404, 410, 411, 434, 435, 454, 455, 471, 472, 475], "summary": {"covered_lines": 121, "num_statements": 183, "percent_covered": 66.12021857923497, "percent_covered_display": "66", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 66.12021857923497, "percent_statements_covered_display": "66"}, "missing_lines": [241, 317, 391, 392, 394, 399, 407, 412, 414, 417, 422, 424, 425, 427, 430, 431, 436, 438, 441, 446, 448, 449, 451, 456, 457, 459, 464, 466, 467, 469, 477, 478, 480, 522, 523, 524, 525, 527, 528, 530, 531, 533, 535, 539, 540, 541, 543, 544, 545, 547, 548, 549, 550, 551, 554, 555, 556, 557, 558, 560, 561, 563], "excluded_lines": [], "start_line": 1}}}, "src/services/ai_engine_client.py": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 19, 22, 25, 28, 29, 30, 33, 44, 50, 51, 52, 53, 55, 57, 58, 63, 65, 67, 68, 69, 71, 78, 79, 80, 81, 82, 83, 84, 86, 108, 109, 111, 117, 118, 120, 125, 126, 127, 128, 129, 132, 134, 136, 139, 142, 143, 148, 161, 162, 163, 165, 166, 168, 174, 176, 177, 184, 206, 207, 210, 217, 218, 219, 220, 221, 226, 232, 239, 240, 241, 244, 246, 247, 252, 267, 269, 270, 271, 272, 275, 276, 278, 289, 293, 296, 299, 300, 301, 304, 307, 308, 309], "summary": {"covered_lines": 99, "num_statements": 123, "percent_covered": 80.48780487804878, "percent_covered_display": "80", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 80.48780487804878, "percent_statements_covered_display": "80"}, "missing_lines": [130, 131, 137, 138, 140, 141, 144, 145, 146, 169, 178, 179, 180, 181, 182, 233, 242, 248, 249, 250, 279, 281, 286, 287], "excluded_lines": [], "functions": {"AIEngineError.__init__": {"executed_lines": [29, 30], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "AIEngineClient.__init__": {"executed_lines": [50, 51, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "AIEngineClient._get_client": {"executed_lines": [57, 58, 63], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "AIEngineClient.close": {"executed_lines": [67, 68, 69], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "AIEngineClient.health_check": {"executed_lines": [78, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "AIEngineClient.start_conversion": {"executed_lines": [108, 109, 111, 117, 118, 120, 125, 126, 127, 128, 129, 132, 134, 136, 139, 142, 143], "summary": {"covered_lines": 17, "num_statements": 26, "percent_covered": 65.38461538461539, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 65.38461538461539, "percent_statements_covered_display": "65"}, "missing_lines": [130, 131, 137, 138, 140, 141, 144, 145, 146], "excluded_lines": [], "start_line": 86}, "AIEngineClient.get_conversion_status": {"executed_lines": [161, 162, 163, 165, 166, 168, 174, 176, 177], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [169, 178, 179, 180, 181, 182], "excluded_lines": [], "start_line": 148}, "AIEngineClient.download_converted_file": {"executed_lines": [206, 207, 210, 217, 218, 219, 220, 221, 226, 232, 239, 240, 241, 244, 246, 247], "summary": {"covered_lines": 16, "num_statements": 21, "percent_covered": 76.19047619047619, "percent_covered_display": "76", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 76.19047619047619, "percent_statements_covered_display": "76"}, "missing_lines": [233, 242, 248, 249, 250], "excluded_lines": [], "start_line": 184}, "AIEngineClient.poll_conversion_status": {"executed_lines": [267, 269, 270, 271, 272, 275, 276, 278, 289], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [279, 281, 286, 287], "excluded_lines": [], "start_line": 252}, "get_ai_engine_client": {"executed_lines": [299, 300, 301], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "close_ai_engine_client": {"executed_lines": [307, 308, 309], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 19, 22, 25, 28, 33, 44, 55, 65, 71, 86, 148, 184, 252, 293, 296, 304], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AIEngineError": {"executed_lines": [29, 30], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "AIEngineClient": {"executed_lines": [50, 51, 52, 53, 57, 58, 63, 67, 68, 69, 78, 79, 80, 81, 82, 83, 84, 108, 109, 111, 117, 118, 120, 125, 126, 127, 128, 129, 132, 134, 136, 139, 142, 143, 161, 162, 163, 165, 166, 168, 174, 176, 177, 206, 207, 210, 217, 218, 219, 220, 221, 226, 232, 239, 240, 241, 244, 246, 247, 267, 269, 270, 271, 272, 275, 276, 278, 289], "summary": {"covered_lines": 68, "num_statements": 92, "percent_covered": 73.91304347826087, "percent_covered_display": "74", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 73.91304347826087, "percent_statements_covered_display": "74"}, "missing_lines": [130, 131, 137, 138, 140, 141, 144, 145, 146, 169, 178, 179, 180, 181, 182, 233, 242, 248, 249, 250, 279, 281, 286, 287], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [8, 9, 10, 11, 13, 15, 18, 19, 22, 25, 28, 33, 44, 55, 65, 71, 86, 148, 184, 252, 293, 296, 299, 300, 301, 304, 307, 308, 309], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/analytics_service.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 12, 15, 18, 19, 21, 22, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 38, 70, 71, 72, 75, 78, 92, 93, 94, 96, 98, 107, 108, 122, 135, 137, 138, 139, 140, 141, 142, 143, 145, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 162, 183, 185, 187, 189, 191, 195, 196, 197, 198, 200, 202, 208, 211, 212, 214, 220, 222, 223, 224, 225, 228, 232, 233, 235, 236, 238, 280, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 303, 304, 305, 306, 309, 310, 313, 316, 317, 318, 319, 320, 321, 324, 327, 330, 331, 332, 333, 334], "summary": {"covered_lines": 118, "num_statements": 140, "percent_covered": 84.28571428571429, "percent_covered_display": "84", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 84.28571428571429, "percent_statements_covered_display": "84"}, "missing_lines": [109, 110, 111, 112, 113, 114, 144, 146, 186, 188, 190, 192, 209, 255, 257, 259, 260, 261, 262, 265, 275, 276], "excluded_lines": [], "functions": {"AnalyticsService.__init__": {"executed_lines": [19], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "AnalyticsService.hash_ip": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "AnalyticsService.get_device_type": {"executed_lines": [29, 30, 31, 32, 33, 34, 35, 36], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "AnalyticsService.track_event": {"executed_lines": [70, 71, 72, 75, 78, 92, 93, 94, 96], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "AnalyticsService.track_feedback_submitted": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [109, 110, 111, 112, 113, 114], "excluded_lines": [], "start_line": 98}, "AnalyticsService.get_events": {"executed_lines": [135, 137, 138, 139, 140, 141, 142, 143, 145, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [144, 146], "excluded_lines": [], "start_line": 122}, "AnalyticsService.get_event_counts": {"executed_lines": [183, 185, 187, 189, 191, 195, 196, 197, 198, 200, 202, 208, 211, 212], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [186, 188, 190, 192, 209], "excluded_lines": [], "start_line": 162}, "AnalyticsService.get_unique_users": {"executed_lines": [220, 222, 223, 224, 225, 228, 232, 233, 235, 236], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "AnalyticsService.get_events_timeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [255, 257, 259, 260, 261, 262, 265, 275, 276], "excluded_lines": [], "start_line": 238}, "get_analytics_service": {"executed_lines": [330, 331, 332, 333, 334], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 12, 15, 18, 21, 22, 26, 27, 38, 98, 122, 162, 214, 238, 280, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 303, 304, 305, 306, 309, 310, 313, 316, 317, 318, 319, 320, 321, 324, 327], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AnalyticsService": {"executed_lines": [19, 24, 29, 30, 31, 32, 33, 34, 35, 36, 70, 71, 72, 75, 78, 92, 93, 94, 96, 107, 108, 135, 137, 138, 139, 140, 141, 142, 143, 145, 147, 148, 149, 150, 152, 153, 154, 156, 157, 159, 160, 183, 185, 187, 189, 191, 195, 196, 197, 198, 200, 202, 208, 211, 212, 220, 222, 223, 224, 225, 228, 232, 233, 235, 236], "summary": {"covered_lines": 65, "num_statements": 87, "percent_covered": 74.71264367816092, "percent_covered_display": "75", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 74.71264367816092, "percent_statements_covered_display": "75"}, "missing_lines": [109, 110, 111, 112, 113, 114, 144, 146, 186, 188, 190, 192, 209, 255, 257, 259, 260, 261, 262, 265, 275, 276], "excluded_lines": [], "start_line": 15}, "AnalyticsEvents": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 12, 15, 18, 21, 22, 26, 27, 38, 98, 122, 162, 214, 238, 280, 284, 285, 286, 287, 288, 291, 292, 293, 294, 295, 298, 299, 300, 303, 304, 305, 306, 309, 310, 313, 316, 317, 318, 319, 320, 321, 324, 327, 330, 331, 332, 333, 334], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/asset_conversion_service.py": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 21, 24, 25, 27, 40, 42, 43, 44, 47, 49, 51, 59, 61, 62, 66, 67, 97, 107, 109, 115, 124, 125, 126, 129, 131, 133, 134, 135, 136, 139, 140, 143, 144, 147, 148, 152, 156, 165, 186, 188, 189, 190, 193, 201, 202, 204, 207, 208, 210, 211, 212, 226, 255, 259, 261, 262, 280, 281, 283, 285, 286, 289, 291, 299, 315, 332], "summary": {"covered_lines": 76, "num_statements": 128, "percent_covered": 59.375, "percent_covered_display": "59", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 59.375, "percent_statements_covered_display": "59"}, "missing_lines": [75, 76, 80, 81, 87, 89, 90, 94, 95, 116, 145, 146, 150, 205, 218, 219, 220, 222, 223, 224, 240, 241, 242, 243, 244, 245, 246, 249, 251, 252, 253, 265, 266, 269, 271, 272, 273, 275, 296, 297, 301, 302, 305, 307, 312, 313, 317, 318, 320, 322, 327, 328], "excluded_lines": [], "functions": {"AssetConversionService.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "AssetConversionService.convert_asset": {"executed_lines": [40, 42, 43, 44, 47, 49, 51, 59, 61, 62, 66, 67], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [75, 76, 80, 81, 87, 89, 90, 94, 95], "excluded_lines": [], "start_line": 27}, "AssetConversionService.convert_assets_for_conversion": {"executed_lines": [107, 109, 115, 124, 125, 126, 129, 131, 133, 139, 140, 143, 144, 147, 148, 152, 156], "summary": {"covered_lines": 17, "num_statements": 21, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 80.95238095238095, "percent_statements_covered_display": "81"}, "missing_lines": [116, 145, 146, 150], "excluded_lines": [], "start_line": 97}, "AssetConversionService.convert_assets_for_conversion.convert_single_asset": {"executed_lines": [134, 135, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "AssetConversionService._call_ai_engine_convert_asset": {"executed_lines": [186, 188, 189, 190, 193, 201, 204, 207, 208, 210, 211, 212], "summary": {"covered_lines": 12, "num_statements": 19, "percent_covered": 63.1578947368421, "percent_covered_display": "63", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 63.1578947368421, "percent_statements_covered_display": "63"}, "missing_lines": [205, 218, 219, 220, 222, 223, 224], "excluded_lines": [], "start_line": 165}, "AssetConversionService._call_ai_engine_convert_asset._do_request": {"executed_lines": [202], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "AssetConversionService._fallback_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [240, 241, 242, 243, 244, 245, 246, 249, 251, 252, 253], "excluded_lines": [], "start_line": 226}, "AssetConversionService._fallback_texture_conversion": {"executed_lines": [259, 261, 262, 280, 281], "summary": {"covered_lines": 5, "num_statements": 12, "percent_covered": 41.666666666666664, "percent_covered_display": "42", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 41.666666666666664, "percent_statements_covered_display": "42"}, "missing_lines": [265, 266, 269, 271, 272, 273, 275], "excluded_lines": [], "start_line": 255}, "AssetConversionService._fallback_sound_conversion": {"executed_lines": [285, 286, 289, 291], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [296, 297], "excluded_lines": [], "start_line": 283}, "AssetConversionService._fallback_model_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [301, 302, 305, 307, 312, 313], "excluded_lines": [], "start_line": 299}, "AssetConversionService._fallback_copy_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [317, 318, 320, 322, 327, 328], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 21, 24, 27, 97, 165, 226, 255, 283, 299, 315, 332], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AssetConversionService": {"executed_lines": [25, 40, 42, 43, 44, 47, 49, 51, 59, 61, 62, 66, 67, 107, 109, 115, 124, 125, 126, 129, 131, 133, 134, 135, 136, 139, 140, 143, 144, 147, 148, 152, 156, 186, 188, 189, 190, 193, 201, 202, 204, 207, 208, 210, 211, 212, 259, 261, 262, 280, 281, 285, 286, 289, 291], "summary": {"covered_lines": 55, "num_statements": 107, "percent_covered": 51.401869158878505, "percent_covered_display": "51", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 51.401869158878505, "percent_statements_covered_display": "51"}, "missing_lines": [75, 76, 80, 81, 87, 89, 90, 94, 95, 116, 145, 146, 150, 205, 218, 219, 220, 222, 223, 224, 240, 241, 242, 243, 244, 245, 246, 249, 251, 252, 253, 265, 266, 269, 271, 272, 273, 275, 296, 297, 301, 302, 305, 307, 312, 313, 317, 318, 320, 322, 327, 328], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [5, 6, 7, 8, 9, 11, 12, 14, 17, 18, 21, 24, 27, 97, 165, 226, 255, 283, 299, 315, 332], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/automation_metrics.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 23, 24, 25, 28, 29, 32, 33, 35, 36, 38, 39, 40, 42, 44, 45, 47, 49, 50, 52, 53, 54, 57, 58, 62, 63, 64, 65, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 82, 83, 84, 87, 88, 89, 92, 95, 96, 99, 100, 103, 104, 105, 106, 107, 108, 109, 110, 113, 126, 127, 129, 131, 132, 133, 134, 135, 136, 138, 140, 141, 143, 144, 145, 148, 149, 152, 153, 155, 186, 199, 200, 203, 206, 207, 209, 222, 224, 226, 228, 229, 235, 238, 239, 242, 243, 246, 247, 248, 251, 252, 253, 256, 261, 262, 267, 270, 271, 274, 300, 302, 315, 318, 324, 325, 326, 327, 328, 329, 333, 387, 425, 452, 471, 472, 474, 475, 476, 480, 483, 484, 486, 501, 506, 507, 508, 509, 513, 516, 519, 520, 521, 524, 526, 529, 531, 534, 536, 539], "summary": {"covered_lines": 155, "num_statements": 170, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 91.17647058823529, "percent_statements_covered_display": "91"}, "missing_lines": [204, 331, 402, 404, 406, 411, 430, 432, 443, 444, 447, 448, 450, 477, 541], "excluded_lines": [], "functions": {"ConversionEvent.conversion_duration_seconds": {"executed_lines": [52, 53, 54], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "AutomationMetricsService.__new__": {"executed_lines": [131, 132, 133, 134, 135, 136], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "AutomationMetricsService.__init__": {"executed_lines": [140, 141, 143, 144, 145, 148, 149, 152, 153], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "AutomationMetricsService.record_conversion_event": {"executed_lines": [186, 199, 200, 203, 206, 207], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [204], "excluded_lines": [], "start_line": 155}, "AutomationMetricsService.get_current_metrics": {"executed_lines": [222, 224, 226, 228, 229, 235, 238, 239, 242, 243, 246, 247, 248, 251, 252, 253, 256, 261, 262, 267, 270, 271, 274, 300], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "AutomationMetricsService.get_dashboard_data": {"executed_lines": [315, 318, 324, 325, 326, 327, 328, 329, 333], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [331], "excluded_lines": [], "start_line": 302}, "AutomationMetricsService.get_historical_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [402, 404, 406, 411], "excluded_lines": [], "start_line": 387}, "AutomationMetricsService.record_historical_snapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [430, 432, 443, 444, 447, 448, 450], "excluded_lines": [], "start_line": 425}, "AutomationMetricsService.get_all_events": {"executed_lines": [471, 472, 474, 475, 476, 480, 483, 484, 486], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [477], "excluded_lines": [], "start_line": 452}, "AutomationMetricsService.reset_metrics": {"executed_lines": [506, 507, 508, 509], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 501}, "get_automation_metrics_service": {"executed_lines": [519, 520, 521], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 516}, "record_conversion_event": {"executed_lines": [526], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "get_current_metrics": {"executed_lines": [531], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529}, "get_dashboard_data": {"executed_lines": [536], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534}, "get_historical_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [541], "excluded_lines": [], "start_line": 539}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 23, 24, 25, 28, 29, 32, 33, 35, 36, 38, 39, 40, 42, 44, 45, 47, 49, 50, 57, 58, 62, 63, 64, 65, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 82, 83, 84, 87, 88, 89, 92, 95, 96, 99, 100, 103, 104, 105, 106, 107, 108, 109, 110, 113, 126, 127, 129, 138, 155, 209, 302, 387, 425, 452, 501, 513, 516, 524, 529, 534, 539], "summary": {"covered_lines": 79, "num_statements": 79, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionEvent": {"executed_lines": [52, 53, 54], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "AutomationMetricsSnapshot": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "AutomationMetricsHistoryPoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "AutomationMetricsService": {"executed_lines": [131, 132, 133, 134, 135, 136, 140, 141, 143, 144, 145, 148, 149, 152, 153, 186, 199, 200, 203, 206, 207, 222, 224, 226, 228, 229, 235, 238, 239, 242, 243, 246, 247, 248, 251, 252, 253, 256, 261, 262, 267, 270, 271, 274, 300, 315, 318, 324, 325, 326, 327, 328, 329, 333, 471, 472, 474, 475, 476, 480, 483, 484, 486, 506, 507, 508, 509], "summary": {"covered_lines": 67, "num_statements": 81, "percent_covered": 82.71604938271605, "percent_covered_display": "83", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 82.71604938271605, "percent_statements_covered_display": "83"}, "missing_lines": [204, 331, 402, 404, 406, 411, 430, 432, 443, 444, 447, 448, 450, 477], "excluded_lines": [], "start_line": 113}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 23, 24, 25, 28, 29, 32, 33, 35, 36, 38, 39, 40, 42, 44, 45, 47, 49, 50, 57, 58, 62, 63, 64, 65, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 82, 83, 84, 87, 88, 89, 92, 95, 96, 99, 100, 103, 104, 105, 106, 107, 108, 109, 110, 113, 126, 127, 129, 138, 155, 209, 302, 387, 425, 452, 501, 513, 516, 519, 520, 521, 524, 526, 529, 531, 534, 536, 539], "summary": {"covered_lines": 85, "num_statements": 86, "percent_covered": 98.83720930232558, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.83720930232558, "percent_statements_covered_display": "99"}, "missing_lines": [541], "excluded_lines": [], "start_line": 1}}}, "src/services/batch_queuing.py": {"executed_lines": [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 34, 36, 37, 38, 39, 41, 43, 49, 52, 54, 55, 56, 57, 58, 59, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 84, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 100, 102, 103, 104, 105, 106, 109, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 125, 138, 150, 166, 167, 168, 169, 172, 175, 178, 181, 184, 187, 190, 193, 195, 201, 210, 214, 215, 216, 225, 227, 229, 235, 236, 237, 240, 243, 246, 248, 250, 252, 255, 258, 260, 283, 284, 287, 288, 290, 301, 302, 305, 306, 307, 310, 311, 312, 313, 316, 318, 320, 322, 339, 340, 341, 346, 347, 349, 351, 353, 363, 364, 373, 374, 378, 393, 394, 396, 397, 400, 401, 402, 403, 404, 406, 409, 410, 416, 417, 418, 422, 424, 426, 439, 440, 442, 443, 446, 447, 449, 450, 451, 452, 455, 457, 459, 463, 464, 465, 466, 468, 470, 471, 477, 478, 480, 482, 484, 501, 502, 503, 504, 506, 507, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 524, 525, 526, 527, 528, 529, 531, 533, 534, 536, 546, 547, 548, 549, 551, 552, 553, 555, 556, 557, 558, 561, 565, 567, 568, 570, 580, 581, 582, 583, 585, 586, 588, 589, 591, 592, 594, 596, 597, 600, 603, 604, 605, 608, 609, 611, 613, 628, 631, 632, 633, 637, 639, 644, 645, 646, 647, 648, 651, 653, 654, 660, 661, 665, 667, 668, 672, 675, 677, 682, 684, 690, 691, 692, 693, 700, 702, 703, 704, 705, 706, 708, 710, 711, 715, 718, 721, 722, 723, 726, 729, 730, 731, 732, 734, 738], "summary": {"covered_lines": 301, "num_statements": 328, "percent_covered": 91.76829268292683, "percent_covered_display": "92", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 91.76829268292683, "percent_statements_covered_display": "92"}, "missing_lines": [247, 249, 251, 253, 365, 366, 367, 370, 376, 407, 456, 460, 521, 530, 562, 563, 634, 640, 641, 655, 659, 695, 696, 697, 698, 699, 737], "excluded_lines": [], "functions": {"QueuePriority.to_score": {"executed_lines": [43, 49], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "BatchJob.__lt__": {"executed_lines": [84], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "BatchGroup.total_jobs": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "BatchGroup.progress": {"executed_lines": [104, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "BatchQueueStats.__init__": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "BatchQueueStats.to_dict": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "IntelligentBatchQueue.__init__": {"executed_lines": [166, 167, 168, 169, 172, 175, 178, 181, 184, 187, 190, 193, 195], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "IntelligentBatchQueue._compute_job_priority_score": {"executed_lines": [210, 214, 215, 216, 225, 227], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "IntelligentBatchQueue._compute_job_complexity": {"executed_lines": [235, 236, 237, 240, 243, 246, 248, 250, 252, 255, 258], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 73.33333333333333, "percent_statements_covered_display": "73"}, "missing_lines": [247, 249, 251, 253], "excluded_lines": [], "start_line": 229}, "IntelligentBatchQueue.enqueue_job": {"executed_lines": [283, 284, 287, 288, 290, 301, 302, 305, 306, 307, 310, 311, 312, 313, 316, 318, 320], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "IntelligentBatchQueue.enqueue_batch": {"executed_lines": [339, 340, 341, 346, 347], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322}, "IntelligentBatchQueue.get_job": {"executed_lines": [351], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "IntelligentBatchQueue.get_next_job": {"executed_lines": [363, 364, 373, 374], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [365, 366, 367, 370, 376], "excluded_lines": [], "start_line": 353}, "IntelligentBatchQueue.get_batch_group": {"executed_lines": [393, 394, 396, 397, 400, 401, 402, 403, 404, 406, 409, 410, 416, 417, 418, 422, 424], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94"}, "missing_lines": [407], "excluded_lines": [], "start_line": 378}, "IntelligentBatchQueue.create_mixed_batch": {"executed_lines": [439, 440, 442, 443, 446, 447, 449, 450, 451, 452, 455, 457, 459, 463, 464, 465, 466, 468, 470, 471, 477, 478, 480, 482], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92"}, "missing_lines": [456, 460], "excluded_lines": [], "start_line": 426}, "IntelligentBatchQueue.update_job_status": {"executed_lines": [501, 502, 503, 504, 506, 507, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 524, 525, 526, 527, 528, 529, 531, 533, 534], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.10344827586206, "percent_statements_covered_display": "93"}, "missing_lines": [521, 530], "excluded_lines": [], "start_line": 484}, "IntelligentBatchQueue.retry_job": {"executed_lines": [546, 547, 548, 549, 551, 552, 553, 555, 556, 557, 558, 561, 565, 567, 568], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [562, 563], "excluded_lines": [], "start_line": 536}, "IntelligentBatchQueue.cancel_job": {"executed_lines": [580, 581, 582, 583, 585, 586, 588, 589, 591, 592], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570}, "IntelligentBatchQueue.get_queue_stats": {"executed_lines": [596, 597, 600, 603, 604, 605, 608, 609, 611], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594}, "IntelligentBatchQueue.process_batch_parallel": {"executed_lines": [628, 631, 632, 633, 637, 639, 644, 645, 646, 647, 648, 651, 653, 654, 660, 661, 665, 667, 668, 672, 675, 677, 682], "summary": {"covered_lines": 23, "num_statements": 28, "percent_covered": 82.14285714285714, "percent_covered_display": "82", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 82.14285714285714, "percent_statements_covered_display": "82"}, "missing_lines": [634, 640, 641, 655, 659], "excluded_lines": [], "start_line": 613}, "IntelligentBatchQueue._process_single_job": {"executed_lines": [690, 691, 692, 693, 700, 702, 703, 704, 705, 706], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [695, 696, 697, 698, 699], "excluded_lines": [], "start_line": 684}, "IntelligentBatchQueue.close": {"executed_lines": [710, 711], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 708}, "get_batch_queue": {"executed_lines": [721, 722, 723], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718}, "reset_batch_queue": {"executed_lines": [729, 730, 731, 732, 734, 738], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [737], "excluded_lines": [], "start_line": 726}, "": {"executed_lines": [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 34, 36, 37, 38, 39, 41, 52, 54, 55, 56, 57, 58, 59, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 102, 103, 109, 112, 123, 138, 150, 201, 229, 260, 322, 349, 353, 378, 426, 484, 536, 570, 594, 613, 684, 708, 715, 718, 726], "summary": {"covered_lines": 81, "num_statements": 81, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"QueuePriority": {"executed_lines": [43, 49], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "BatchJobStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "BatchJob": {"executed_lines": [84], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "BatchGroup": {"executed_lines": [100, 104, 105, 106], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "BatchQueueStats": {"executed_lines": [113, 114, 115, 116, 117, 118, 119, 120, 121, 125], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "IntelligentBatchQueue": {"executed_lines": [166, 167, 168, 169, 172, 175, 178, 181, 184, 187, 190, 193, 195, 210, 214, 215, 216, 225, 227, 235, 236, 237, 240, 243, 246, 248, 250, 252, 255, 258, 283, 284, 287, 288, 290, 301, 302, 305, 306, 307, 310, 311, 312, 313, 316, 318, 320, 339, 340, 341, 346, 347, 351, 363, 364, 373, 374, 393, 394, 396, 397, 400, 401, 402, 403, 404, 406, 409, 410, 416, 417, 418, 422, 424, 439, 440, 442, 443, 446, 447, 449, 450, 451, 452, 455, 457, 459, 463, 464, 465, 466, 468, 470, 471, 477, 478, 480, 482, 501, 502, 503, 504, 506, 507, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 524, 525, 526, 527, 528, 529, 531, 533, 534, 546, 547, 548, 549, 551, 552, 553, 555, 556, 557, 558, 561, 565, 567, 568, 580, 581, 582, 583, 585, 586, 588, 589, 591, 592, 596, 597, 600, 603, 604, 605, 608, 609, 611, 628, 631, 632, 633, 637, 639, 644, 645, 646, 647, 648, 651, 653, 654, 660, 661, 665, 667, 668, 672, 675, 677, 682, 690, 691, 692, 693, 700, 702, 703, 704, 705, 706, 710, 711], "summary": {"covered_lines": 194, "num_statements": 220, "percent_covered": 88.18181818181819, "percent_covered_display": "88", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 88.18181818181819, "percent_statements_covered_display": "88"}, "missing_lines": [247, 249, 251, 253, 365, 366, 367, 370, 376, 407, 456, 460, 521, 530, 562, 563, 634, 640, 641, 655, 659, 695, 696, 697, 698, 699], "excluded_lines": [], "start_line": 138}, "": {"executed_lines": [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 31, 34, 36, 37, 38, 39, 41, 52, 54, 55, 56, 57, 58, 59, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 102, 103, 109, 112, 123, 138, 150, 201, 229, 260, 322, 349, 353, 378, 426, 484, 536, 570, 594, 613, 684, 708, 715, 718, 721, 722, 723, 726, 729, 730, 731, 732, 734, 738], "summary": {"covered_lines": 90, "num_statements": 91, "percent_covered": 98.9010989010989, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.9010989010989, "percent_statements_covered_display": "99"}, "missing_lines": [737], "excluded_lines": [], "start_line": 1}}}, "src/services/build_performance_service.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 30, 33, 34, 36, 40, 43, 44, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 73, 74, 75, 76, 78, 88, 97, 98, 101, 106, 109, 110, 111, 112, 113, 115, 119, 121, 142, 143, 144, 145, 148, 149, 150, 151, 152, 154, 156, 157, 158, 159, 161, 162, 165, 173, 176, 178, 180, 194, 196, 217, 225, 240, 241, 242, 246, 247, 248, 251, 252, 253, 256, 257, 258, 259, 260, 265, 266, 269, 272, 275, 276, 281, 284, 285, 286, 289, 296, 297, 298, 300, 304, 306, 316, 317, 319, 329, 330, 331, 334, 335, 336, 337, 338, 341, 342, 343, 348, 351, 352, 353, 356, 357, 358, 360, 370, 380, 381, 383, 384, 385, 388, 390, 400, 401, 408, 410, 420, 435, 437, 438, 440, 443, 444, 447, 449, 457, 458, 459, 460, 461, 462, 465, 466, 467, 470, 471, 472, 473, 474, 476, 477, 478, 485, 487, 497, 498, 501, 502, 503, 506, 507, 508, 514, 516, 517, 519, 529, 530, 533, 535, 536, 539, 541, 544, 545, 547, 551, 554, 555, 557, 558, 560, 562, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 577, 579, 585, 587, 611, 613, 614, 616, 617, 618, 619, 620, 625, 627, 630, 631, 636, 638, 639, 655, 656, 657, 658, 659, 660, 661, 665, 668, 671, 672, 673, 679, 686, 687, 693, 696, 704, 705, 708, 715, 716, 721, 724, 726, 727, 730, 732, 733, 736, 741, 742], "summary": {"covered_lines": 253, "num_statements": 272, "percent_covered": 93.01470588235294, "percent_covered_display": "93", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 93.01470588235294, "percent_statements_covered_display": "93"}, "missing_lines": [37, 38, 174, 243, 277, 278, 386, 402, 403, 404, 406, 441, 510, 537, 542, 548, 621, 622, 623], "excluded_lines": [], "functions": {"BuildPerformanceService.__init__": {"executed_lines": [74, 75, 76], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "BuildPerformanceService.start_tracking": {"executed_lines": [88, 97, 98, 101, 106, 109, 110, 111, 112, 113, 115, 119], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "BuildPerformanceService.update_stage": {"executed_lines": [142, 143, 144, 145, 148, 149, 150, 151, 152, 154, 156, 157, 158, 159, 161, 162, 165, 173, 176, 178], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [174], "excluded_lines": [], "start_line": 121}, "BuildPerformanceService.start_stage": {"executed_lines": [194], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "BuildPerformanceService.complete_stage": {"executed_lines": [217], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "BuildPerformanceService.end_tracking": {"executed_lines": [240, 241, 242, 246, 247, 248, 251, 252, 253, 256, 257, 258, 259, 260, 265, 266, 269, 272, 275, 276, 281, 284, 285, 286, 289, 296, 297, 298, 300, 304], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [243, 277, 278], "excluded_lines": [], "start_line": 225}, "BuildPerformanceService.get_build": {"executed_lines": [316, 317], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306}, "BuildPerformanceService.get_snapshot": {"executed_lines": [329, 330, 331, 334, 335, 336, 337, 338, 341, 342, 343, 348, 351, 352, 353, 356, 357, 358, 360], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "BuildPerformanceService.get_response": {"executed_lines": [380, 381, 383, 384, 385, 388], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [386], "excluded_lines": [], "start_line": 370}, "BuildPerformanceService.get_summary": {"executed_lines": [400, 401, 408, 410], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [402, 403, 404, 406], "excluded_lines": [], "start_line": 390}, "BuildPerformanceService.get_stats": {"executed_lines": [435, 437, 438, 440, 443, 444, 447, 449, 457, 458, 459, 460, 461, 462, 465, 466, 467, 470, 471, 472, 473, 474, 476, 477, 478, 485], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96"}, "missing_lines": [441], "excluded_lines": [], "start_line": 420}, "BuildPerformanceService._calculate_performance_score": {"executed_lines": [497, 498, 501, 502, 503, 506, 507, 508, 514, 516, 517], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92"}, "missing_lines": [510], "excluded_lines": [], "start_line": 487}, "BuildPerformanceService._calculate_build_efficiency": {"executed_lines": [529, 530, 533, 535, 536], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [537], "excluded_lines": [], "start_line": 519}, "BuildPerformanceService._calculate_progress": {"executed_lines": [541, 544, 545, 547, 551, 554, 555, 557, 558, 560], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [542, 548], "excluded_lines": [], "start_line": 539}, "BuildPerformanceService._capture_resource_usage": {"executed_lines": [564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 577, 579], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 562}, "BuildPerformanceService._to_response": {"executed_lines": [587], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585}, "BuildPerformanceService._get_from_cache": {"executed_lines": [613, 614, 616, 617, 618, 619, 620], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [621, 622, 623], "excluded_lines": [], "start_line": 611}, "BuildPerformanceService._get_all_builds": {"executed_lines": [627, 630, 631, 636], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625}, "BuildPerformanceService.track_stage": {"executed_lines": [655, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 639}, "get_build_performance_service": {"executed_lines": [671, 672, 673], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668}, "start_build_performance_tracking": {"executed_lines": [686, 687, 693], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 679}, "update_build_stage": {"executed_lines": [704, 705], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 696}, "end_build_performance_tracking": {"executed_lines": [715, 716, 721], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 708}, "get_build_performance": {"executed_lines": [726, 727], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724}, "get_build_performance_snapshot": {"executed_lines": [732, 733], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 730}, "get_build_performance_stats": {"executed_lines": [741, 742], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 736}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 30, 33, 34, 36, 40, 43, 44, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 73, 78, 121, 180, 196, 225, 306, 319, 370, 390, 420, 487, 519, 539, 562, 585, 611, 625, 638, 639, 665, 668, 679, 696, 708, 724, 730, 736], "summary": {"covered_lines": 54, "num_statements": 56, "percent_covered": 96.42857142857143, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.42857142857143, "percent_statements_covered_display": "96"}, "missing_lines": [37, 38], "excluded_lines": [], "start_line": 1}}, "classes": {"BuildStages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "BuildPerformanceService": {"executed_lines": [74, 75, 76, 88, 97, 98, 101, 106, 109, 110, 111, 112, 113, 115, 119, 142, 143, 144, 145, 148, 149, 150, 151, 152, 154, 156, 157, 158, 159, 161, 162, 165, 173, 176, 178, 194, 217, 240, 241, 242, 246, 247, 248, 251, 252, 253, 256, 257, 258, 259, 260, 265, 266, 269, 272, 275, 276, 281, 284, 285, 286, 289, 296, 297, 298, 300, 304, 316, 317, 329, 330, 331, 334, 335, 336, 337, 338, 341, 342, 343, 348, 351, 352, 353, 356, 357, 358, 360, 380, 381, 383, 384, 385, 388, 400, 401, 408, 410, 435, 437, 438, 440, 443, 444, 447, 449, 457, 458, 459, 460, 461, 462, 465, 466, 467, 470, 471, 472, 473, 474, 476, 477, 478, 485, 497, 498, 501, 502, 503, 506, 507, 508, 514, 516, 517, 529, 530, 533, 535, 536, 541, 544, 545, 547, 551, 554, 555, 557, 558, 560, 564, 566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 577, 579, 587, 613, 614, 616, 617, 618, 619, 620, 627, 630, 631, 636, 655, 656, 657, 658, 659, 660, 661], "summary": {"covered_lines": 182, "num_statements": 199, "percent_covered": 91.4572864321608, "percent_covered_display": "91", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 91.4572864321608, "percent_statements_covered_display": "91"}, "missing_lines": [174, 243, 277, 278, 386, 402, 403, 404, 406, 441, 510, 537, 542, 548, 621, 622, 623], "excluded_lines": [], "start_line": 62}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 30, 33, 34, 36, 40, 43, 44, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 73, 78, 121, 180, 196, 225, 306, 319, 370, 390, 420, 487, 519, 539, 562, 585, 611, 625, 638, 639, 665, 668, 671, 672, 673, 679, 686, 687, 693, 696, 704, 705, 708, 715, 716, 721, 724, 726, 727, 730, 732, 733, 736, 741, 742], "summary": {"covered_lines": 71, "num_statements": 73, "percent_covered": 97.26027397260275, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.26027397260275, "percent_statements_covered_display": "97"}, "missing_lines": [37, 38], "excluded_lines": [], "start_line": 1}}}, "src/services/cache.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 20, 21, 22, 23, 26, 28, 37, 39, 40, 42, 43, 44, 45, 48, 49, 50, 54, 55, 56, 57, 58, 60, 64, 65, 68, 69, 70, 71, 72, 76, 77, 78, 80, 81, 82, 83, 84, 85, 91, 92, 93, 94, 95, 96, 98, 102, 103, 111, 114, 115, 116, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 143, 144, 145, 150, 151, 152, 154, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 168, 171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, 183, 184, 187, 188, 189, 190, 192, 193, 194, 195, 196, 198, 199, 200, 201, 204, 208, 212, 213, 215, 222, 223, 224, 225, 231, 233, 239, 240, 249, 253, 254, 265, 269, 270, 279, 293, 295, 296, 299, 302, 304, 305, 307, 317, 319, 320, 322, 323, 327, 329, 336, 337, 338, 340, 347, 348, 349, 351, 355, 356, 357, 358, 363, 364, 368, 369, 371, 378, 379, 380, 381, 385, 395, 396, 397, 398, 399, 401, 402, 403, 405, 415, 416, 417, 418, 423, 424, 425], "summary": {"covered_lines": 200, "num_statements": 244, "percent_covered": 81.9672131147541, "percent_covered_display": "82", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 81.9672131147541, "percent_statements_covered_display": "82"}, "missing_lines": [66, 86, 87, 88, 89, 104, 105, 106, 107, 108, 109, 161, 162, 185, 186, 241, 243, 244, 245, 246, 247, 255, 256, 257, 258, 259, 260, 261, 262, 263, 271, 272, 273, 274, 275, 325, 365, 366, 367, 400, 419, 420, 421, 422], "excluded_lines": [], "functions": {"CacheService.__init__": {"executed_lines": [37, 39, 40, 42, 43, 44, 45, 48, 49, 50, 54, 55, 56, 57, 58], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "CacheService._json_encoder_default": {"executed_lines": [64, 65], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [66], "excluded_lines": [], "start_line": 60}, "CacheService.set_job_status": {"executed_lines": [69, 70, 71, 72, 76, 77, 78], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "CacheService.get_job_status": {"executed_lines": [81, 82, 83, 84, 85], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [86, 87, 88, 89], "excluded_lines": [], "start_line": 80}, "CacheService.track_progress": {"executed_lines": [92, 93, 94, 95, 96], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "CacheService.set_progress": {"executed_lines": [102, 103], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [104, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 98}, "CacheService.cache_mod_analysis": {"executed_lines": [114, 115, 116, 121, 122, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111}, "CacheService.get_mod_analysis": {"executed_lines": [126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "CacheService.cache_conversion_result": {"executed_lines": [143, 144, 145, 150, 151, 152], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "CacheService.get_conversion_result": {"executed_lines": [155, 156, 157, 158, 159, 160, 163, 164, 165, 166], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [161, 162], "excluded_lines": [], "start_line": 154}, "CacheService.cache_asset_conversion": {"executed_lines": [171, 172, 173, 174, 175, 176], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "CacheService.get_asset_conversion": {"executed_lines": [179, 180, 181, 182, 183, 184, 187, 188, 189, 190], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [185, 186], "excluded_lines": [], "start_line": 178}, "CacheService.invalidate_cache": {"executed_lines": [193, 194, 195, 196], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 192}, "CacheService.get_cache_stats": {"executed_lines": [199, 200, 201, 204, 208, 212, 213, 215, 222, 223, 224, 225, 231], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "CacheService.set_export_data": {"executed_lines": [239, 240], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [241, 243, 244, 245, 246, 247], "excluded_lines": [], "start_line": 233}, "CacheService.get_export_data": {"executed_lines": [253, 254], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 18.181818181818183, "percent_covered_display": "18", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18"}, "missing_lines": [255, 256, 257, 258, 259, 260, 261, 262, 263], "excluded_lines": [], "start_line": 249}, "CacheService.delete_export_data": {"executed_lines": [269, 270], "summary": {"covered_lines": 2, "num_statements": 7, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [271, 272, 273, 274, 275], "excluded_lines": [], "start_line": 265}, "CacheService.cache_conversion_by_hash": {"executed_lines": [293, 295, 296, 299, 302, 304, 305], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "CacheService.get_cached_conversion_by_hash": {"executed_lines": [317, 319, 320, 322, 323, 327], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [325], "excluded_lines": [], "start_line": 307}, "CacheService.invalidate_conversion_cache": {"executed_lines": [336, 337, 338], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "CacheService.invalidate_mod_analysis_cache": {"executed_lines": [347, 348, 349], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "CacheService.clear_all_caches": {"executed_lines": [355, 356, 357, 358, 363, 364, 368, 369], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [365, 366, 367], "excluded_lines": [], "start_line": 351}, "CacheService.get_cache_hit_rate": {"executed_lines": [378, 379, 380, 381], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371}, "CacheService.get_ai_engine_progress": {"executed_lines": [395, 396, 397, 398, 399, 401, 402, 403], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [400], "excluded_lines": [], "start_line": 385}, "CacheService.subscribe_to_ai_engine_progress": {"executed_lines": [415, 416, 417, 418, 423, 424, 425], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [419, 420, 421, 422], "excluded_lines": [], "start_line": 405}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 20, 21, 22, 23, 26, 28, 60, 68, 80, 91, 98, 111, 125, 140, 154, 168, 178, 192, 198, 233, 249, 265, 279, 307, 329, 340, 351, 371, 385, 405], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CacheService": {"executed_lines": [37, 39, 40, 42, 43, 44, 45, 48, 49, 50, 54, 55, 56, 57, 58, 64, 65, 69, 70, 71, 72, 76, 77, 78, 81, 82, 83, 84, 85, 92, 93, 94, 95, 96, 102, 103, 114, 115, 116, 121, 122, 123, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 143, 144, 145, 150, 151, 152, 155, 156, 157, 158, 159, 160, 163, 164, 165, 166, 171, 172, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 187, 188, 189, 190, 193, 194, 195, 196, 199, 200, 201, 204, 208, 212, 213, 215, 222, 223, 224, 225, 231, 239, 240, 253, 254, 269, 270, 293, 295, 296, 299, 302, 304, 305, 317, 319, 320, 322, 323, 327, 336, 337, 338, 347, 348, 349, 355, 356, 357, 358, 363, 364, 368, 369, 378, 379, 380, 381, 395, 396, 397, 398, 399, 401, 402, 403, 415, 416, 417, 418, 423, 424, 425], "summary": {"covered_lines": 156, "num_statements": 200, "percent_covered": 78.0, "percent_covered_display": "78", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 78.0, "percent_statements_covered_display": "78"}, "missing_lines": [66, 86, 87, 88, 89, 104, 105, 106, 107, 108, 109, 161, 162, 185, 186, 241, 243, 244, 245, 246, 247, 255, 256, 257, 258, 259, 260, 261, 262, 263, 271, 272, 273, 274, 275, 325, 365, 366, 367, 400, 419, 420, 421, 422], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 15, 16, 17, 20, 21, 22, 23, 26, 28, 60, 68, 80, 91, 98, 111, 125, 140, 154, 168, 178, 192, 198, 233, 249, 265, 279, 307, 329, 340, 351, 371, 385, 405], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/comprehensive_report_generator.py": {"executed_lines": [13, 14, 15, 17, 31, 34, 37, 38, 39, 41, 44, 45, 46, 47, 50, 51, 53, 56, 71, 74, 76, 78, 80, 81, 82, 83, 86, 87, 88, 90, 92, 93, 96, 111, 112, 113, 114, 115, 116, 118, 121, 122, 123, 124, 127, 128, 129, 132, 133, 135, 151, 155, 156, 157, 158, 160, 162, 174, 177, 178, 179, 182, 183, 184, 185, 188, 189, 190, 193, 194, 196, 198, 200, 202, 204, 206, 209, 211, 220, 228, 230, 241, 245, 248, 251, 252, 255, 258, 263, 271, 272, 274, 276, 278, 279, 280, 282, 283, 288, 289, 290, 292, 294, 296, 297, 299, 300, 301, 302, 303, 304, 305, 307, 310, 312, 314, 315, 317, 319, 320, 328, 332, 333, 335, 341, 343, 344, 346, 347, 352, 354, 355, 357, 358, 363, 365, 367, 368, 369, 370, 371, 374, 376, 377, 379, 380, 384, 385, 387, 389, 391, 393, 394, 395, 397, 398, 400, 401, 402, 404, 406, 408, 410, 411, 414, 415, 416, 419], "summary": {"covered_lines": 168, "num_statements": 188, "percent_covered": 89.36170212765957, "percent_covered_display": "89", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 89.36170212765957, "percent_statements_covered_display": "89"}, "missing_lines": [195, 197, 199, 201, 203, 205, 207, 281, 285, 306, 308, 318, 321, 322, 323, 324, 326, 372, 412, 417], "excluded_lines": [], "functions": {"ConversionReportGenerator.__init__": {"executed_lines": [38, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ConversionReportGenerator.generate_summary_report": {"executed_lines": [44, 45, 46, 47, 50, 51, 53, 56, 71, 74, 76], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "ConversionReportGenerator.generate_feature_analysis": {"executed_lines": [80, 81, 82, 83, 86, 87, 88, 90, 92, 93, 96, 111, 112, 113, 114, 115, 116, 118, 121, 122, 123, 124, 127, 128, 129, 132, 133, 135], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "ConversionReportGenerator.generate_assumptions_report": {"executed_lines": [155, 156, 157, 158, 160, 162, 174, 177, 178, 179, 182, 183, 184, 185, 188, 189, 190, 193, 194, 196, 198, 200, 202, 204, 206, 209, 211, 220], "summary": {"covered_lines": 28, "num_statements": 35, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [195, 197, 199, 201, 203, 205, 207], "excluded_lines": [], "start_line": 151}, "ConversionReportGenerator.generate_developer_log": {"executed_lines": [230], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "ConversionReportGenerator.create_interactive_report": {"executed_lines": [245, 248, 251, 252, 255, 258, 263, 271, 272], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "ConversionReportGenerator._calculate_compatibility_score": {"executed_lines": [276, 278, 279, 280, 282, 283, 288, 289, 290, 292], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [281, 285], "excluded_lines": [], "start_line": 274}, "ConversionReportGenerator._categorize_feature": {"executed_lines": [296, 297, 299, 300, 301, 302, 303, 304, 305, 307, 310], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [306, 308], "excluded_lines": [], "start_line": 294}, "ConversionReportGenerator._identify_conversion_pattern": {"executed_lines": [314, 315, 317, 319, 320], "summary": {"covered_lines": 5, "num_statements": 11, "percent_covered": 45.45454545454545, "percent_covered_display": "45", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45"}, "missing_lines": [318, 321, 322, 323, 324, 326], "excluded_lines": [], "start_line": 312}, "ConversionReportGenerator._generate_compatibility_summary": {"executed_lines": [332, 333, 335], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "ConversionReportGenerator._generate_visual_overview": {"executed_lines": [343, 344, 346, 347], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "ConversionReportGenerator._generate_impact_summary": {"executed_lines": [354, 355, 357, 358], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "ConversionReportGenerator._generate_recommended_actions": {"executed_lines": [365, 367, 368, 369, 370, 371, 374, 376, 377, 379, 380, 384, 385, 387], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [372], "excluded_lines": [], "start_line": 363}, "ConversionReportGenerator._identify_optimizations": {"executed_lines": [391, 393, 394, 395, 397, 398, 400, 401, 402, 404], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "ConversionReportGenerator._identify_technical_debt": {"executed_lines": [408, 410, 411, 414, 415, 416, 419], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [412, 417], "excluded_lines": [], "start_line": 406}, "": {"executed_lines": [13, 14, 15, 17, 31, 34, 37, 41, 78, 151, 228, 241, 274, 294, 312, 328, 341, 352, 363, 389, 406], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionReportGenerator": {"executed_lines": [38, 39, 44, 45, 46, 47, 50, 51, 53, 56, 71, 74, 76, 80, 81, 82, 83, 86, 87, 88, 90, 92, 93, 96, 111, 112, 113, 114, 115, 116, 118, 121, 122, 123, 124, 127, 128, 129, 132, 133, 135, 155, 156, 157, 158, 160, 162, 174, 177, 178, 179, 182, 183, 184, 185, 188, 189, 190, 193, 194, 196, 198, 200, 202, 204, 206, 209, 211, 220, 230, 245, 248, 251, 252, 255, 258, 263, 271, 272, 276, 278, 279, 280, 282, 283, 288, 289, 290, 292, 296, 297, 299, 300, 301, 302, 303, 304, 305, 307, 310, 314, 315, 317, 319, 320, 332, 333, 335, 343, 344, 346, 347, 354, 355, 357, 358, 365, 367, 368, 369, 370, 371, 374, 376, 377, 379, 380, 384, 385, 387, 391, 393, 394, 395, 397, 398, 400, 401, 402, 404, 408, 410, 411, 414, 415, 416, 419], "summary": {"covered_lines": 147, "num_statements": 167, "percent_covered": 88.02395209580838, "percent_covered_display": "88", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 88.02395209580838, "percent_statements_covered_display": "88"}, "missing_lines": [195, 197, 199, 201, 203, 205, 207, 281, 285, 306, 308, 318, 321, 322, 323, 324, 326, 372, 412, 417], "excluded_lines": [], "start_line": 34}, "": {"executed_lines": [13, 14, 15, 17, 31, 34, 37, 41, 78, 151, 228, 241, 274, 294, 312, 328, 341, 352, 363, 389, 406], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/conversion_failure_analysis.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 31, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 79, 110, 158, 160, 161, 163, 164, 165, 167, 168, 169, 170, 171, 172, 174, 177, 179, 180, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 202, 229, 232, 233, 236, 245, 248, 251, 269, 271, 274, 276, 286, 289, 316, 318, 319, 332, 339, 340], "summary": {"covered_lines": 103, "num_statements": 111, "percent_covered": 92.7927927927928, "percent_covered_display": "93", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 92.7927927927928, "percent_statements_covered_display": "93"}, "missing_lines": [291, 294, 295, 299, 300, 304, 305, 310], "excluded_lines": [], "functions": {"ConversionFailure.to_dict": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "determine_failure_severity": {"executed_lines": [160, 161, 163, 164, 165, 167, 168, 169, 170, 171, 172, 174], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 158}, "determine_failure_source": {"executed_lines": [179, 180, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "log_conversion_failure": {"executed_lines": [229, 232, 233, 236, 245, 248, 251, 269, 271], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "_get_user_message": {"executed_lines": [276, 286], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "_log_failure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [291, 294, 295, 299, 300, 304, 305, 310], "excluded_lines": [], "start_line": 289}, "log_retry_success": {"executed_lines": [318, 319], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316}, "log_retry_failure": {"executed_lines": [339, 340], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 31, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 110, 158, 177, 202, 274, 289, 316, 332], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"FailureSeverity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "FailureSource": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "FailureDetail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "ConversionFailure": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 31, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 110, 158, 160, 161, 163, 164, 165, 167, 168, 169, 170, 171, 172, 174, 177, 179, 180, 182, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 199, 202, 229, 232, 233, 236, 245, 248, 251, 269, 271, 274, 276, 286, 289, 316, 318, 319, 332, 339, 340], "summary": {"covered_lines": 102, "num_statements": 110, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 92.72727272727273, "percent_statements_covered_display": "93"}, "missing_lines": [291, 294, 295, 299, 300, 304, 305, 310], "excluded_lines": [], "start_line": 1}}}, "src/services/conversion_parser.py": {"executed_lines": [1, 2, 3, 4, 6, 9, 12, 14, 16, 17, 18, 19, 20, 22, 25, 27, 28, 29, 30, 31, 32, 34, 36, 37, 40, 51, 53, 54, 56, 57, 60, 61, 62, 63, 69, 70, 71, 72, 73, 79, 81, 83, 84, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 104, 105, 106, 109, 113, 122, 125, 126, 127, 128, 129, 130, 131, 132, 135, 141, 142, 143, 144, 145, 146, 153, 154, 157, 161, 162, 163, 164, 177, 188, 197], "summary": {"covered_lines": 86, "num_statements": 86, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"parse_json_file": {"executed_lines": [14, 16, 17, 18, 19, 20, 22], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "find_pack_folder": {"executed_lines": [27, 28, 29, 30, 31, 32, 34, 36, 37], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "transform_pack_to_addon_data": {"executed_lines": [51, 53, 54, 56, 57, 60, 61, 62, 63, 69, 70, 71, 72, 73, 79, 81, 83, 84, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 104, 105, 106, 109, 113, 122, 125, 126, 127, 128, 129, 130, 131, 132, 135, 141, 142, 143, 144, 145, 146, 153, 154, 157, 161, 162, 163, 164, 177, 188, 197], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "": {"executed_lines": [1, 2, 3, 4, 6, 9, 12, 25, 40], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 9, 12, 14, 16, 17, 18, 19, 20, 22, 25, 27, 28, 29, 30, 31, 32, 34, 36, 37, 40, 51, 53, 54, 56, 57, 60, 61, 62, 63, 69, 70, 71, 72, 73, 79, 81, 83, 84, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 104, 105, 106, 109, 113, 122, 125, 126, 127, 128, 129, 130, 131, 132, 135, 141, 142, 143, 144, 145, 146, 153, 154, 157, 161, 162, 163, 164, 177, 188, 197], "summary": {"covered_lines": 86, "num_statements": 86, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/conversion_queue.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 21, 22, 23, 24, 26, 27, 28, 30, 32, 38, 40, 61, 62, 64, 77, 80, 82, 83, 85, 92, 95, 96, 97, 99, 100, 102, 104, 112, 113, 115, 117, 133, 135, 143, 146, 154, 156, 170, 173, 180, 183, 191, 193, 205, 208, 217, 219, 229, 231, 232, 233, 236, 238, 248, 258, 260, 261, 262, 264, 271, 273, 275, 277, 282, 284, 285, 286, 290, 293], "summary": {"covered_lines": 77, "num_statements": 81, "percent_covered": 95.06172839506173, "percent_covered_display": "95", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 95.06172839506173, "percent_statements_covered_display": "95"}, "missing_lines": [33, 296, 297, 298], "excluded_lines": [], "functions": {"ConversionJobQueue.__init__": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ConversionJobQueue._get_redis": {"executed_lines": [32, 38], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [33], "excluded_lines": [], "start_line": 30}, "ConversionJobQueue.enqueue_job": {"executed_lines": [61, 62, 64, 77, 80, 82, 83], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "ConversionJobQueue.dequeue_job": {"executed_lines": [92, 95, 96, 97, 99, 100, 102, 104, 112, 113, 115], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "ConversionJobQueue.update_progress": {"executed_lines": [133, 135, 143, 146, 154], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "ConversionJobQueue.complete_job": {"executed_lines": [170, 173, 180, 183, 191], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "ConversionJobQueue.fail_job": {"executed_lines": [205, 208, 217], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "ConversionJobQueue.get_job_status": {"executed_lines": [229, 231, 232, 233, 236, 238], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219}, "ConversionJobQueue.get_job_result": {"executed_lines": [258, 260, 261, 262, 264], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248}, "ConversionJobQueue.get_queue_stats": {"executed_lines": [273, 275, 277], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "ConversionJobQueue.close": {"executed_lines": [284, 285, 286], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "get_conversion_job_queue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [296, 297, 298], "excluded_lines": [], "start_line": 293}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 21, 22, 23, 24, 26, 30, 40, 85, 117, 156, 193, 219, 248, 271, 282, 290, 293], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionJobQueue": {"executed_lines": [27, 28, 32, 38, 61, 62, 64, 77, 80, 82, 83, 92, 95, 96, 97, 99, 100, 102, 104, 112, 113, 115, 133, 135, 143, 146, 154, 170, 173, 180, 183, 191, 205, 208, 217, 229, 231, 232, 233, 236, 238, 258, 260, 261, 262, 264, 273, 275, 277, 284, 285, 286], "summary": {"covered_lines": 52, "num_statements": 53, "percent_covered": 98.11320754716981, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.11320754716981, "percent_statements_covered_display": "98"}, "missing_lines": [33], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 21, 22, 23, 24, 26, 30, 40, 85, 117, 156, 193, 219, 248, 271, 282, 290, 293], "summary": {"covered_lines": 25, "num_statements": 28, "percent_covered": 89.28571428571429, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89"}, "missing_lines": [296, 297, 298], "excluded_lines": [], "start_line": 1}}}, "src/services/conversion_report.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 19, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 38, 48, 50, 58, 60, 68, 70, 72, 74, 75, 76, 78, 80, 93, 152, 155, 156, 157, 158, 160, 180, 216, 252, 255, 258, 259, 260], "summary": {"covered_lines": 46, "num_statements": 96, "percent_covered": 47.916666666666664, "percent_covered_display": "48", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 47.916666666666664, "percent_statements_covered_display": "48"}, "missing_lines": [95, 107, 108, 109, 110, 111, 113, 114, 121, 122, 126, 127, 134, 135, 136, 138, 139, 146, 147, 149, 177, 178, 191, 193, 194, 195, 197, 198, 200, 202, 203, 204, 206, 207, 209, 212, 214, 227, 228, 229, 231, 236, 237, 240, 241, 242, 243, 244, 246, 248], "excluded_lines": [], "functions": {"ConversionReport.__init__": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "ConversionReport.add_stage": {"executed_lines": [38], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "ConversionReport.add_assumption": {"executed_lines": [50], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "ConversionReport.add_issue": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "ConversionReport.set_metrics": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "ConversionReport.complete": {"executed_lines": [74, 75, 76], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "ConversionReport.to_dict": {"executed_lines": [80], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "ConversionReport.to_markdown": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [95, 107, 108, 109, 110, 111, 113, 114, 121, 122, 126, 127, 134, 135, 136, 138, 139, 146, 147, 149], "excluded_lines": [], "start_line": 93}, "ConversionReportGenerator.__init__": {"executed_lines": [156, 157, 158], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "ConversionReportGenerator.generate_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [177, 178], "excluded_lines": [], "start_line": 160}, "ConversionReportGenerator.save_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [191, 193, 194, 195, 197, 198, 200, 202, 203, 204, 206, 207, 209, 212, 214], "excluded_lines": [], "start_line": 180}, "ConversionReportGenerator.get_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [227, 228, 229, 231, 236, 237, 240, 241, 242, 243, 244, 246, 248], "excluded_lines": [], "start_line": 216}, "get_report_generator": {"executed_lines": [258, 259, 260], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 19, 36, 48, 58, 68, 72, 78, 93, 152, 155, 160, 180, 216, 252, 255], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionReport": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 38, 50, 60, 70, 74, 75, 76, 80], "summary": {"covered_lines": 18, "num_statements": 38, "percent_covered": 47.36842105263158, "percent_covered_display": "47", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 47.36842105263158, "percent_statements_covered_display": "47"}, "missing_lines": [95, 107, 108, 109, 110, 111, 113, 114, 121, 122, 126, 127, 134, 135, 136, 138, 139, 146, 147, 149], "excluded_lines": [], "start_line": 16}, "ConversionReportGenerator": {"executed_lines": [156, 157, 158], "summary": {"covered_lines": 3, "num_statements": 33, "percent_covered": 9.090909090909092, "percent_covered_display": "9", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 9.090909090909092, "percent_statements_covered_display": "9"}, "missing_lines": [177, 178, 191, 193, 194, 195, 197, 198, 200, 202, 203, 204, 206, 207, 209, 212, 214, 227, 228, 229, 231, 236, 237, 240, 241, 242, 243, 244, 246, 248], "excluded_lines": [], "start_line": 152}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 19, 36, 48, 58, 68, 72, 78, 93, 152, 155, 160, 180, 216, 252, 255, 258, 259, 260], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/conversion_service.py": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 21, 26, 27, 28, 37, 40, 41, 43, 44, 46, 47, 48, 51, 63, 64, 65, 68, 80, 85, 86, 88, 107, 113, 116, 117, 121, 123, 125, 127, 155, 156, 158, 161, 162, 165, 171, 173, 181, 188, 189, 190, 194, 201, 203, 204, 210, 212, 216, 217, 218, 219, 222, 225, 227, 229, 237, 238, 243, 257, 258, 259, 265, 269, 271, 280, 289, 296, 298, 299, 300, 301, 302, 303, 305, 312, 313, 318, 319, 320, 321, 324, 326, 327, 328, 329, 336, 344, 345, 346, 349, 352, 361, 364, 365, 367, 370, 371, 372, 374, 390, 400, 402, 414, 421, 428, 431, 434, 435, 436, 439, 458, 460, 461, 462, 463, 464, 466, 468, 469, 477, 478], "summary": {"covered_lines": 128, "num_statements": 164, "percent_covered": 78.04878048780488, "percent_covered_display": "78", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 78.04878048780488, "percent_statements_covered_display": "78"}, "missing_lines": [195, 196, 197, 198, 213, 214, 215, 250, 251, 252, 273, 274, 275, 276, 277, 278, 282, 283, 284, 285, 286, 287, 291, 292, 293, 294, 325, 330, 331, 333, 347, 368, 369, 480, 481, 482], "excluded_lines": [], "functions": {"_get_container_path": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "ConversionService.__init__": {"executed_lines": [85, 86], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "ConversionService._transfer_file_to_ai_engine": {"executed_lines": [107, 113, 116, 117, 121, 123, 125], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "ConversionService.process_conversion": {"executed_lines": [155, 156, 158, 161, 162, 165, 171, 173, 181, 188, 189, 190, 194, 201, 203, 204, 210, 212, 216, 217, 218, 219, 222, 225, 227, 229, 237, 238, 243, 257, 258, 259, 265, 269, 271, 280, 289, 296, 298, 299, 300, 301, 302, 303], "summary": {"covered_lines": 44, "num_statements": 70, "percent_covered": 62.857142857142854, "percent_covered_display": "63", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 62.857142857142854, "percent_statements_covered_display": "63"}, "missing_lines": [195, 196, 197, 198, 213, 214, 215, 250, 251, 252, 273, 274, 275, 276, 277, 278, 282, 283, 284, 285, 286, 287, 291, 292, 293, 294], "excluded_lines": [], "start_line": 127}, "ConversionService._poll_and_broadcast": {"executed_lines": [312, 313, 318, 319, 320, 321, 324, 326, 327, 328, 329, 336, 344, 345, 346, 349, 352, 361, 364, 365, 367, 370, 371, 372], "summary": {"covered_lines": 24, "num_statements": 31, "percent_covered": 77.41935483870968, "percent_covered_display": "77", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 77.41935483870968, "percent_statements_covered_display": "77"}, "missing_lines": [325, 330, 331, 333, 347, 368, 369], "excluded_lines": [], "start_line": 305}, "ConversionService._update_job_status": {"executed_lines": [390, 400], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374}, "ConversionService._handle_error": {"executed_lines": [414, 421], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "get_conversion_service": {"executed_lines": [434, 435, 436], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431}, "process_conversion_task": {"executed_lines": [458, 460, 461, 462, 463, 464, 466, 468, 469, 477, 478], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [480, 481, 482], "excluded_lines": [], "start_line": 439}, "": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 21, 26, 27, 28, 37, 40, 41, 43, 44, 46, 47, 48, 51, 68, 80, 88, 127, 305, 374, 402, 428, 431, 439], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionService": {"executed_lines": [85, 86, 107, 113, 116, 117, 121, 123, 125, 155, 156, 158, 161, 162, 165, 171, 173, 181, 188, 189, 190, 194, 201, 203, 204, 210, 212, 216, 217, 218, 219, 222, 225, 227, 229, 237, 238, 243, 257, 258, 259, 265, 269, 271, 280, 289, 296, 298, 299, 300, 301, 302, 303, 312, 313, 318, 319, 320, 321, 324, 326, 327, 328, 329, 336, 344, 345, 346, 349, 352, 361, 364, 365, 367, 370, 371, 372, 390, 400, 414, 421], "summary": {"covered_lines": 81, "num_statements": 114, "percent_covered": 71.05263157894737, "percent_covered_display": "71", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 71.05263157894737, "percent_statements_covered_display": "71"}, "missing_lines": [195, 196, 197, 198, 213, 214, 215, 250, 251, 252, 273, 274, 275, 276, 277, 278, 282, 283, 284, 285, 286, 287, 291, 292, 293, 294, 325, 330, 331, 333, 347, 368, 369], "excluded_lines": [], "start_line": 68}, "": {"executed_lines": [12, 13, 14, 15, 16, 17, 19, 21, 26, 27, 28, 37, 40, 41, 43, 44, 46, 47, 48, 51, 63, 64, 65, 68, 80, 88, 127, 305, 374, 402, 428, 431, 434, 435, 436, 439, 458, 460, 461, 462, 463, 464, 466, 468, 469, 477, 478], "summary": {"covered_lines": 47, "num_statements": 50, "percent_covered": 94.0, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 94.0, "percent_statements_covered_display": "94"}, "missing_lines": [480, 481, 482], "excluded_lines": [], "start_line": 1}}}, "src/services/curseforge_service.py": {"executed_lines": [8, 9, 10, 11, 13, 16, 18, 21, 24, 25, 26, 27, 36, 59, 61, 68, 69, 70, 71, 73, 74, 75, 81, 82, 83, 84, 85, 87, 97, 99, 100, 101, 106, 107, 108, 109, 110, 112, 129, 131, 134, 135, 137, 138, 139, 145, 146, 151, 166, 168, 169, 170, 175, 176, 177, 182, 192, 193, 195, 196, 197, 203, 204, 209, 223, 226, 227, 230, 231, 233, 234, 235, 241, 245], "summary": {"covered_lines": 74, "num_statements": 83, "percent_covered": 89.1566265060241, "percent_covered_display": "89", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 89.1566265060241, "percent_statements_covered_display": "89"}, "missing_lines": [147, 148, 149, 178, 179, 180, 205, 206, 207], "excluded_lines": [], "functions": {"CurseForgeService.__init__": {"executed_lines": [25, 26, 27], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CurseForgeService.search_mods": {"executed_lines": [59, 61, 68, 69, 70, 71, 73, 74, 75, 81, 82, 83, 84, 85], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "CurseForgeService.get_mod_info": {"executed_lines": [97, 99, 100, 101, 106, 107, 108, 109, 110], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "CurseForgeService.get_mod_files": {"executed_lines": [129, 131, 134, 135, 137, 138, 139, 145, 146], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [147, 148, 149], "excluded_lines": [], "start_line": 112}, "CurseForgeService.get_file_download_url": {"executed_lines": [166, 168, 169, 170, 175, 176, 177], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [178, 179, 180], "excluded_lines": [], "start_line": 151}, "CurseForgeService.get_categories": {"executed_lines": [192, 193, 195, 196, 197, 203, 204], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [205, 206, 207], "excluded_lines": [], "start_line": 182}, "CurseForgeService.parse_curseforge_url": {"executed_lines": [223, 226, 227, 230, 231, 233, 234, 235, 241], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 18, 21, 24, 36, 87, 112, 151, 182, 209, 245], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CurseForgeService": {"executed_lines": [25, 26, 27, 59, 61, 68, 69, 70, 71, 73, 74, 75, 81, 82, 83, 84, 85, 97, 99, 100, 101, 106, 107, 108, 109, 110, 129, 131, 134, 135, 137, 138, 139, 145, 146, 166, 168, 169, 170, 175, 176, 177, 192, 193, 195, 196, 197, 203, 204, 223, 226, 227, 230, 231, 233, 234, 235, 241], "summary": {"covered_lines": 58, "num_statements": 67, "percent_covered": 86.56716417910448, "percent_covered_display": "87", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 86.56716417910448, "percent_statements_covered_display": "87"}, "missing_lines": [147, 148, 149, 178, 179, 180, 205, 206, 207], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 18, 21, 24, 36, 87, 112, 151, 182, 209, 245], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/email_service.py": {"executed_lines": [7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 30, 36, 37, 38, 39, 41, 56, 67, 68, 71, 72, 73, 74, 76, 78, 81, 83, 91, 93, 94, 100, 111, 118, 119, 120, 121, 123, 129, 135, 154, 181, 186, 211, 274, 277, 283, 284, 286, 288, 292, 294], "summary": {"covered_lines": 55, "num_statements": 78, "percent_covered": 70.51282051282051, "percent_covered_display": "71", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 70.51282051282051, "percent_statements_covered_display": "71"}, "missing_lines": [43, 44, 45, 46, 48, 49, 50, 51, 52, 54, 96, 97, 98, 160, 219, 220, 221, 240, 241, 242, 256, 289, 290], "excluded_lines": [], "functions": {"SendGridEmailService.__init__": {"executed_lines": [36, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "SendGridEmailService._get_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "excluded_lines": [], "start_line": 41}, "SendGridEmailService.send": {"executed_lines": [67, 68, 71, 72, 73, 74, 76, 78, 81, 83, 91, 93, 94], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [96, 97, 98], "excluded_lines": [], "start_line": 56}, "SendGridEmailService._render_template": {"executed_lines": [111, 118, 119, 120, 121, 123], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "SendGridEmailService._email_verification_template": {"executed_lines": [135], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "SendGridEmailService._password_reset_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [160], "excluded_lines": [], "start_line": 154}, "SendGridEmailService._welcome_template": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "SendGridEmailService._conversion_complete_template": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [219, 220, 221, 240, 241, 242, 256], "excluded_lines": [], "start_line": 211}, "get_email_service": {"executed_lines": [283, 284, 286, 288, 292, 294], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [289, 290], "excluded_lines": [], "start_line": 277}, "": {"executed_lines": [7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 30, 41, 56, 100, 129, 154, 181, 211, 274, 277], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"EmailMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "SendGridEmailService": {"executed_lines": [36, 37, 38, 39, 67, 68, 71, 72, 73, 74, 76, 78, 81, 83, 91, 93, 94, 111, 118, 119, 120, 121, 123, 135, 186], "summary": {"covered_lines": 25, "num_statements": 46, "percent_covered": 54.34782608695652, "percent_covered_display": "54", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 54.34782608695652, "percent_statements_covered_display": "54"}, "missing_lines": [43, 44, 45, 46, 48, 49, 50, 51, 52, 54, 96, 97, 98, 160, 219, 220, 221, 240, 241, 242, 256], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [7, 8, 9, 11, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 30, 41, 56, 100, 129, 154, 181, 211, 274, 277, 283, 284, 286, 288, 292, 294], "summary": {"covered_lines": 30, "num_statements": 32, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94"}, "missing_lines": [289, 290], "excluded_lines": [], "start_line": 1}}}, "src/services/error_classifier.py": {"executed_lines": [10, 11, 12, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 42, 43, 44, 48, 204, 224, 244, 247, 255, 256, 257, 258, 259, 261, 262, 267, 269, 278, 286, 288, 289, 291, 293, 294, 298, 305, 306, 308, 309, 310, 312, 313, 315, 317, 332, 333, 334, 335, 338, 339, 343, 345, 347, 348, 349, 351, 364, 365, 376, 379, 380, 394, 405, 406, 416, 423, 435, 436, 441, 449, 478, 479, 481, 522, 524, 531, 549, 553, 556, 559, 560, 561, 564, 578], "summary": {"covered_lines": 97, "num_statements": 125, "percent_covered": 77.6, "percent_covered_display": "78", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 77.6, "percent_statements_covered_display": "78"}, "missing_lines": [340, 407, 417, 424, 431, 432, 442, 451, 452, 453, 465, 466, 467, 474, 475, 482, 483, 484, 490, 491, 497, 498, 504, 505, 511, 512, 519, 520], "excluded_lines": [], "functions": {"ErrorClassification.__init__": {"executed_lines": [255, 256, 257, 258, 259], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247}, "ErrorClassification.__repr__": {"executed_lines": [262], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "ErrorClassification.to_dict": {"executed_lines": [269], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "ErrorClassifier.__init__": {"executed_lines": [288, 289], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 286}, "ErrorClassifier._compile_patterns": {"executed_lines": [293, 294], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "ErrorClassifier._match_patterns": {"executed_lines": [305, 306, 308, 309, 310, 312, 313, 315], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "ErrorClassifier.classify": {"executed_lines": [332, 333, 334, 335, 338, 339, 343, 345, 347, 348, 349, 351, 364, 365], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [340], "excluded_lines": [], "start_line": 317}, "ErrorClassifier._check_direct_type": {"executed_lines": [379, 380, 394, 405, 406, 416, 423, 435, 436, 441, 449, 478, 479, 481, 522], "summary": {"covered_lines": 15, "num_statements": 42, "percent_covered": 35.714285714285715, "percent_covered_display": "36", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "36"}, "missing_lines": [407, 417, 424, 431, 432, 442, 451, 452, 453, 465, 466, 467, 474, 475, 482, 483, 484, 490, 491, 497, 498, 504, 505, 511, 512, 519, 520], "excluded_lines": [], "start_line": 376}, "ErrorClassifier.get_recovery_priority": {"executed_lines": [531, 549], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "get_classifier": {"executed_lines": [559, 560, 561], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 556}, "classify_error": {"executed_lines": [578], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564}, "": {"executed_lines": [10, 11, 12, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 42, 43, 44, 48, 204, 224, 244, 247, 261, 267, 278, 286, 291, 298, 317, 376, 524, 553, 556, 564], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ErrorType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "ErrorSeverity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "ErrorClassification": {"executed_lines": [255, 256, 257, 258, 259, 262, 269], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "ErrorClassifier": {"executed_lines": [288, 289, 293, 294, 305, 306, 308, 309, 310, 312, 313, 315, 332, 333, 334, 335, 338, 339, 343, 345, 347, 348, 349, 351, 364, 365, 379, 380, 394, 405, 406, 416, 423, 435, 436, 441, 449, 478, 479, 481, 522, 531, 549], "summary": {"covered_lines": 43, "num_statements": 71, "percent_covered": 60.563380281690144, "percent_covered_display": "61", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 60.563380281690144, "percent_statements_covered_display": "61"}, "missing_lines": [340, 407, 417, 424, 431, 432, 442, 451, 452, 453, 465, 466, 467, 474, 475, 482, 483, 484, 490, 491, 497, 498, 504, 505, 511, 512, 519, 520], "excluded_lines": [], "start_line": 278}, "": {"executed_lines": [10, 11, 12, 13, 15, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 42, 43, 44, 48, 204, 224, 244, 247, 261, 267, 278, 286, 291, 298, 317, 376, 524, 553, 556, 559, 560, 561, 564, 578], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/error_handler.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 15, 18, 21, 22, 23, 24, 27, 30, 31, 34, 37, 38, 41, 44, 45, 48, 51, 52, 55, 77, 78, 79, 80, 82, 83, 84, 86, 87, 89, 90, 91, 94, 95, 96, 98, 103, 105, 107, 108, 110, 112, 113, 118, 120, 123, 133, 134, 141, 142, 149, 150, 157, 158, 167, 175, 185, 186, 189, 192, 193, 194, 196, 198, 200, 201, 203, 204, 206, 210, 212, 218, 230, 231, 234, 235, 237, 241, 244, 247, 248, 249], "summary": {"covered_lines": 87, "num_statements": 88, "percent_covered": 98.86363636363636, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.86363636363636, "percent_statements_covered_display": "99"}, "missing_lines": [116], "excluded_lines": [], "functions": {"ConversionError.__init__": {"executed_lines": [22, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "AIEngineUnavailableError.__init__": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "ConversionTimeoutError.__init__": {"executed_lines": [38], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "InvalidInputError.__init__": {"executed_lines": [45], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "ModelUnavailableError.__init__": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "retry_with_backoff": {"executed_lines": [77, 78, 120], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "retry_with_backoff.decorator": {"executed_lines": [79, 118], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "retry_with_backoff.decorator.wrapper": {"executed_lines": [80, 82, 83, 84, 86, 87, 89, 90, 91, 94, 95, 96, 98, 103, 105, 107, 108, 110, 112, 113], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [116], "excluded_lines": [], "start_line": 79}, "categorize_error": {"executed_lines": [133, 134, 141, 142, 149, 150, 157, 158, 167], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "get_user_friendly_error": {"executed_lines": [185, 186], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "ErrorHandler.__init__": {"executed_lines": [193, 194], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 192}, "ErrorHandler.record_error": {"executed_lines": [198, 200, 201, 203, 204, 206], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "ErrorHandler.get_error_stats": {"executed_lines": [212], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210}, "ErrorHandler.should_alert": {"executed_lines": [230, 231, 234, 235, 237], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "get_error_handler": {"executed_lines": [247, 248, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 15, 18, 21, 27, 30, 34, 37, 41, 44, 48, 51, 55, 123, 175, 189, 192, 196, 210, 218, 241, 244], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionError": {"executed_lines": [22, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "AIEngineUnavailableError": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "ConversionTimeoutError": {"executed_lines": [38], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "InvalidInputError": {"executed_lines": [45], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "ModelUnavailableError": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "ErrorHandler": {"executed_lines": [193, 194, 198, 200, 201, 203, 204, 206, 212, 230, 231, 234, 235, 237], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 15, 18, 21, 27, 30, 34, 37, 41, 44, 48, 51, 55, 77, 78, 79, 80, 82, 83, 84, 86, 87, 89, 90, 91, 94, 95, 96, 98, 103, 105, 107, 108, 110, 112, 113, 118, 120, 123, 133, 134, 141, 142, 149, 150, 157, 158, 167, 175, 185, 186, 189, 192, 196, 210, 218, 241, 244, 247, 248, 249], "summary": {"covered_lines": 66, "num_statements": 67, "percent_covered": 98.50746268656717, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.50746268656717, "percent_statements_covered_display": "99"}, "missing_lines": [116], "excluded_lines": [], "start_line": 1}}}, "src/services/error_handlers.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 25, 27, 31, 34, 37, 38, 40, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 71, 72, 73, 74, 75, 76, 79, 82, 88, 97, 100, 106, 115, 118, 124, 133, 136, 137, 147, 163, 166, 172, 173, 183, 186, 192, 201, 204, 210, 219, 222, 228, 237, 240, 246, 255, 263, 264, 267, 268, 269, 270, 271, 272, 273, 274, 275, 277, 280, 282, 286, 288, 290, 292, 294, 295, 296, 298, 300, 301, 303, 306, 316, 317, 320, 321, 325, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 345, 357, 360, 374, 376, 377, 378, 383, 400, 402, 403, 406, 407, 411, 414, 418, 419, 422, 426, 431, 453, 459, 460, 463, 470, 472, 479, 480, 481, 482, 494, 497, 508, 510, 517, 518, 521, 522, 524], "summary": {"covered_lines": 148, "num_statements": 185, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [41, 42, 276, 278, 283, 287, 289, 291, 293, 297, 299, 322, 326, 327, 328, 329, 331, 347, 348, 349, 353, 354, 358, 379, 380, 385, 386, 391, 397, 438, 441, 444, 448, 473, 483, 488, 491], "excluded_lines": [], "functions": {"is_debug_mode": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ModPorterException.__init__": {"executed_lines": [71, 72, 73, 74, 75, 76], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "ConversionException.__init__": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "FileProcessingException.__init__": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "ValidationException.__init__": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "NotFoundException.__init__": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "RateLimitException.__init__": {"executed_lines": [172, 173], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "ParseError.__init__": {"executed_lines": [192], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "AssetError.__init__": {"executed_lines": [210], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "LogicError.__init__": {"executed_lines": [228], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "PackageError.__init__": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "_categorize_error": {"executed_lines": [263, 264, 267, 268, 269, 270, 271, 272, 273, 274, 275, 277, 280, 282, 286, 288, 290, 292, 294, 295, 296, 298, 300, 301, 303], "summary": {"covered_lines": 25, "num_statements": 34, "percent_covered": 73.52941176470588, "percent_covered_display": "74", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 73.52941176470588, "percent_statements_covered_display": "74"}, "missing_lines": [276, 278, 283, 287, 289, 291, 293, 297, 299], "excluded_lines": [], "start_line": 255}, "create_error_response": {"executed_lines": [316, 317, 320, 321, 325, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 345, 357, 360], "summary": {"covered_lines": 19, "num_statements": 31, "percent_covered": 61.29032258064516, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 61.29032258064516, "percent_statements_covered_display": "61"}, "missing_lines": [322, 326, 327, 328, 329, 331, 347, 348, 349, 353, 354, 358], "excluded_lines": [], "start_line": 306}, "_record_error_metric": {"executed_lines": [376, 377, 378], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [379, 380], "excluded_lines": [], "start_line": 374}, "modporter_exception_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [385, 386, 391, 397], "excluded_lines": [], "start_line": 383}, "http_exception_handler": {"executed_lines": [402, 403, 406, 407, 411], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400}, "validation_exception_handler": {"executed_lines": [418, 419, 422, 426], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "generic_exception_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [438, 441, 444, 448], "excluded_lines": [], "start_line": 431}, "register_exception_handlers": {"executed_lines": [459, 460, 463, 470, 472, 479, 480, 481, 482, 494], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [473, 483, 488, 491], "excluded_lines": [], "start_line": 453}, "verify_exception_handlers": {"executed_lines": [508, 510, 517, 518, 521, 522, 524], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 497}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 25, 31, 34, 37, 38, 40, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 79, 82, 97, 100, 115, 118, 133, 136, 147, 163, 166, 183, 186, 201, 204, 219, 222, 237, 240, 255, 306, 374, 383, 400, 414, 431, 453, 497], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 1}}, "classes": {"ErrorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "ModPorterException": {"executed_lines": [71, 72, 73, 74, 75, 76], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "ConversionException": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "FileProcessingException": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "ValidationException": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "NotFoundException": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "RateLimitException": {"executed_lines": [172, 173], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "ParseError": {"executed_lines": [192], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "AssetError": {"executed_lines": [210], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "LogicError": {"executed_lines": [228], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219}, "PackageError": {"executed_lines": [246], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 25, 27, 31, 34, 37, 38, 40, 45, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 79, 82, 97, 100, 115, 118, 133, 136, 147, 163, 166, 183, 186, 201, 204, 219, 222, 237, 240, 255, 263, 264, 267, 268, 269, 270, 271, 272, 273, 274, 275, 277, 280, 282, 286, 288, 290, 292, 294, 295, 296, 298, 300, 301, 303, 306, 316, 317, 320, 321, 325, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 345, 357, 360, 374, 376, 377, 378, 383, 400, 402, 403, 406, 407, 411, 414, 418, 419, 422, 426, 431, 453, 459, 460, 463, 470, 472, 479, 480, 481, 482, 494, 497, 508, 510, 517, 518, 521, 522, 524], "summary": {"covered_lines": 132, "num_statements": 169, "percent_covered": 78.10650887573965, "percent_covered_display": "78", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 78.10650887573965, "percent_statements_covered_display": "78"}, "missing_lines": [41, 42, 276, 278, 283, 287, 289, 291, 293, 297, 299, 322, 326, 327, 328, 329, 331, 347, 348, 349, 353, 354, 358, 379, 380, 385, 386, 391, 397, 438, 441, 444, 448, 473, 483, 488, 491], "excluded_lines": [], "start_line": 1}}}, "src/services/error_patterns.py": {"executed_lines": [10, 11, 12, 13, 15, 17, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 40, 41, 42, 43, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 68, 76, 78, 79, 81, 85, 125, 158, 191, 224, 257, 290, 323, 349, 382, 408, 427, 460, 485, 487, 489, 504, 505, 506, 508, 514, 517, 519, 521, 522, 524, 526, 528, 529, 531, 533, 538, 546, 554, 560, 563, 566, 567, 568, 571, 579, 584], "summary": {"covered_lines": 84, "num_statements": 102, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82"}, "missing_lines": [63, 64, 65, 515, 523, 530, 535, 536, 540, 541, 542, 543, 544, 548, 556, 576, 581, 586], "excluded_lines": [], "functions": {"ErrorPattern.get_primary_recovery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63, 64, 65], "excluded_lines": [], "start_line": 61}, "ErrorPatternLibrary.__init__": {"executed_lines": [78, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "ErrorPatternLibrary._build_builtin_patterns": {"executed_lines": [85, 125, 158, 191, 224, 257, 290, 323, 349, 382, 408, 427, 460], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "ErrorPatternLibrary.get_pattern": {"executed_lines": [487], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 485}, "ErrorPatternLibrary.get_recovery_actions": {"executed_lines": [504, 505, 506, 508, 514, 517], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [515], "excluded_lines": [], "start_line": 489}, "ErrorPatternLibrary.should_escalate": {"executed_lines": [521, 522, 524], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [523], "excluded_lines": [], "start_line": 519}, "ErrorPatternLibrary.get_fallback_mode": {"executed_lines": [528, 529, 531], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [530], "excluded_lines": [], "start_line": 526}, "ErrorPatternLibrary.register_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [535, 536], "excluded_lines": [], "start_line": 533}, "ErrorPatternLibrary.unregister_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [540, 541, 542, 543, 544], "excluded_lines": [], "start_line": 538}, "ErrorPatternLibrary.get_patterns_by_tag": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [548], "excluded_lines": [], "start_line": 546}, "ErrorPatternLibrary.get_all_patterns": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [556], "excluded_lines": [], "start_line": 554}, "get_pattern_library": {"executed_lines": [566, 567, 568], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 563}, "get_recovery_actions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [576], "excluded_lines": [], "start_line": 571}, "should_escalate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [581], "excluded_lines": [], "start_line": 579}, "get_fallback_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [586], "excluded_lines": [], "start_line": 584}, "": {"executed_lines": [10, 11, 12, 13, 15, 17, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 40, 41, 42, 43, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 68, 76, 81, 485, 489, 519, 526, 533, 538, 546, 554, 560, 563, 571, 579, 584], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RecoveryStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "RecoveryAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "ErrorPattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63, 64, 65], "excluded_lines": [], "start_line": 50}, "ErrorPatternLibrary": {"executed_lines": [78, 79, 85, 125, 158, 191, 224, 257, 290, 323, 349, 382, 408, 427, 460, 487, 504, 505, 506, 508, 514, 517, 521, 522, 524, 528, 529, 531], "summary": {"covered_lines": 28, "num_statements": 40, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [515, 523, 530, 535, 536, 540, 541, 542, 543, 544, 548, 556], "excluded_lines": [], "start_line": 68}, "": {"executed_lines": [10, 11, 12, 13, 15, 17, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 40, 41, 42, 43, 44, 45, 46, 49, 50, 53, 54, 55, 56, 57, 58, 59, 61, 68, 76, 81, 485, 489, 519, 526, 533, 538, 546, 554, 560, 563, 566, 567, 568, 571, 579, 584], "summary": {"covered_lines": 56, "num_statements": 59, "percent_covered": 94.91525423728814, "percent_covered_display": "95", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 94.91525423728814, "percent_statements_covered_display": "95"}, "missing_lines": [576, 581, 586], "excluded_lines": [], "start_line": 1}}}, "src/services/error_recovery.py": {"executed_lines": [18, 19, 20, 21, 22, 23, 25, 33, 40, 43, 46, 47, 48, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 70, 71, 75, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 98, 99, 101, 103, 104, 106, 109, 112, 113, 114, 116, 123, 124, 125, 126, 128, 130, 131, 132, 134, 136, 138, 140, 142, 144, 146, 149, 152, 153, 154, 156, 158, 160, 172, 173, 184, 185, 188, 194, 196, 198, 201, 204, 205, 206, 207, 209, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 223, 227, 239, 245, 246, 247, 251, 253, 254, 255, 257, 258, 259, 260, 261, 263, 265, 274, 275, 279, 287, 288, 290, 291, 292, 295, 296, 300, 301, 305, 313, 315, 316, 318, 319, 320, 322, 324, 326, 327, 330, 331, 333, 334, 335, 337, 338, 342, 363, 371, 372, 373, 380, 388, 389, 396, 403, 411, 412, 419, 427, 428, 429, 430, 432, 440, 441, 447, 455, 461, 469, 471, 482, 495, 501, 502, 503, 505, 506, 507, 509, 526, 527, 530, 536, 539, 540, 543, 544, 556, 559, 560, 567, 569, 570, 571, 572, 573, 574, 575, 578, 579, 582, 583, 584, 585, 586, 587, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600, 608, 614, 667, 670, 673, 674, 675, 678, 694], "summary": {"covered_lines": 234, "num_statements": 296, "percent_covered": 79.05405405405405, "percent_covered_display": "79", "missing_lines": 62, "excluded_lines": 1, "percent_statements_covered": 79.05405405405405, "percent_statements_covered_display": "79"}, "missing_lines": [72, 133, 189, 190, 191, 192, 225, 248, 277, 297, 303, 328, 340, 350, 351, 353, 354, 355, 356, 358, 359, 361, 375, 376, 378, 479, 528, 545, 547, 603, 604, 605, 606, 610, 627, 628, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 641, 642, 643, 645, 647, 648, 649, 650, 651, 652, 655, 656, 658, 659, 661, 663], "excluded_lines": [618], "functions": {"RecoveryAttempt.duration": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [72], "excluded_lines": [], "start_line": 68}, "RecoveryResult.total_duration": {"executed_lines": [94, 95, 96], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "RecoveryResult.succeeded": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "RecoveryResult.recovered_with_degraded": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "DegradedModeManager.__init__": {"executed_lines": [113, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "DegradedModeManager.enable_degraded_mode": {"executed_lines": [123, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "DegradedModeManager.disable_degraded_mode": {"executed_lines": [130, 131, 132, 134], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [133], "excluded_lines": [], "start_line": 128}, "DegradedModeManager.is_degraded": {"executed_lines": [138], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "DegradedModeManager.get_fallback_handler": {"executed_lines": [142], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "DegradedModeManager.get_all_degraded_features": {"executed_lines": [146], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "EscalationManager.__init__": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152}, "EscalationManager.register_handler": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "EscalationManager.escalate": {"executed_lines": [172, 173, 184, 185, 188, 194], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [189, 190, 191, 192], "excluded_lines": [], "start_line": 160}, "EscalationManager.get_pending_escalations": {"executed_lines": [198], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "RecoveryStrategyExecutor.__init__": {"executed_lines": [205, 206, 207], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "RecoveryStrategyExecutor._register_default_handlers": {"executed_lines": [211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "RecoveryStrategyExecutor.register_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [225], "excluded_lines": [], "start_line": 223}, "RecoveryStrategyExecutor.execute": {"executed_lines": [239, 245, 246, 247, 251, 253, 254, 255, 257, 258, 259, 260, 261, 263], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [248], "excluded_lines": [], "start_line": 227}, "RecoveryStrategyExecutor._execute_handler": {"executed_lines": [274, 275], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [277], "excluded_lines": [], "start_line": 265}, "RecoveryStrategyExecutor._handle_retry": {"executed_lines": [287, 288, 290, 291, 292, 295, 296, 300, 301], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [297, 303], "excluded_lines": [], "start_line": 279}, "RecoveryStrategyExecutor._handle_retry_with_backoff": {"executed_lines": [313, 315, 316, 318, 319, 320, 322, 324, 326, 327, 330, 331, 333, 334, 335, 337, 338], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89"}, "missing_lines": [328, 340], "excluded_lines": [], "start_line": 305}, "RecoveryStrategyExecutor._handle_fallback_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [350, 351, 353, 354, 355, 356, 358, 359, 361], "excluded_lines": [], "start_line": 342}, "RecoveryStrategyExecutor._handle_fallback_method": {"executed_lines": [371, 372, 373], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [375, 376, 378], "excluded_lines": [], "start_line": 363}, "RecoveryStrategyExecutor._handle_degraded_mode": {"executed_lines": [388, 389, 396], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "RecoveryStrategyExecutor._handle_skip_and_continue": {"executed_lines": [411, 412], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403}, "RecoveryStrategyExecutor._handle_use_cache": {"executed_lines": [427, 428, 429, 430], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "RecoveryStrategyExecutor._handle_use_default": {"executed_lines": [440, 441], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "RecoveryStrategyExecutor._handle_notify_user": {"executed_lines": [455], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 447}, "RecoveryStrategyExecutor._handle_escalate": {"executed_lines": [469], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 461}, "RecoveryStrategyExecutor._handle_no_recovery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [479], "excluded_lines": [], "start_line": 471}, "ErrorSupervisor.__init__": {"executed_lines": [501, 502, 503, 505, 506, 507], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 495}, "ErrorSupervisor.supervise": {"executed_lines": [526, 527, 530, 536, 539, 540, 543, 544, 556, 559, 560, 567, 569, 570, 571, 572, 573, 574, 575, 578, 579, 582, 583, 584, 585, 586, 587, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 38, "num_statements": 45, "percent_covered": 84.44444444444444, "percent_covered_display": "84", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 84.44444444444444, "percent_statements_covered_display": "84"}, "missing_lines": [528, 545, 547, 603, 604, 605, 606], "excluded_lines": [], "start_line": 509}, "ErrorSupervisor.register_escalation_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [610], "excluded_lines": [], "start_line": 608}, "with_supervision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [627, 663], "excluded_lines": [618], "start_line": 614}, "with_supervision.decorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [628, 630, 647, 658, 659, 661], "excluded_lines": [], "start_line": 627}, "with_supervision.decorator.async_wrapper": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [631, 632, 633, 634, 635, 636, 637, 638, 639, 641, 642, 643, 645], "excluded_lines": [], "start_line": 630}, "with_supervision.decorator.sync_wrapper": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [648, 649, 650, 651, 652, 655, 656], "excluded_lines": [], "start_line": 647}, "get_supervisor": {"executed_lines": [673, 674, 675], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670}, "recover": {"executed_lines": [694], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 678}, "": {"executed_lines": [18, 19, 20, 21, 22, 23, 25, 33, 40, 43, 46, 47, 48, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 75, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 98, 99, 103, 104, 109, 112, 116, 128, 136, 140, 144, 149, 152, 156, 160, 196, 201, 204, 209, 223, 227, 265, 279, 305, 342, 363, 380, 403, 419, 432, 447, 461, 471, 482, 495, 509, 608, 614, 667, 670, 678], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RecoveryStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "RecoveryAttempt": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [72], "excluded_lines": [], "start_line": 55}, "RecoveryResult": {"executed_lines": [94, 95, 96, 101, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "DegradedModeManager": {"executed_lines": [113, 114, 123, 124, 125, 126, 130, 131, 132, 134, 138, 142, 146], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [133], "excluded_lines": [], "start_line": 109}, "EscalationManager": {"executed_lines": [153, 154, 158, 172, 173, 184, 185, 188, 194, 198], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [189, 190, 191, 192], "excluded_lines": [], "start_line": 149}, "RecoveryStrategyExecutor": {"executed_lines": [205, 206, 207, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 239, 245, 246, 247, 251, 253, 254, 255, 257, 258, 259, 260, 261, 263, 274, 275, 287, 288, 290, 291, 292, 295, 296, 300, 301, 313, 315, 316, 318, 319, 320, 322, 324, 326, 327, 330, 331, 333, 334, 335, 337, 338, 371, 372, 373, 388, 389, 396, 411, 412, 427, 428, 429, 430, 440, 441, 455, 469], "summary": {"covered_lines": 72, "num_statements": 92, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78"}, "missing_lines": [225, 248, 277, 297, 303, 328, 340, 350, 351, 353, 354, 355, 356, 358, 359, 361, 375, 376, 378, 479], "excluded_lines": [], "start_line": 201}, "ErrorSupervisor": {"executed_lines": [501, 502, 503, 505, 506, 507, 526, 527, 530, 536, 539, 540, 543, 544, 556, 559, 560, 567, 569, 570, 571, 572, 573, 574, 575, 578, 579, 582, 583, 584, 585, 586, 587, 588, 589, 592, 593, 594, 595, 596, 597, 598, 599, 600], "summary": {"covered_lines": 44, "num_statements": 52, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [528, 545, 547, 603, 604, 605, 606, 610], "excluded_lines": [], "start_line": 482}, "": {"executed_lines": [18, 19, 20, 21, 22, 23, 25, 33, 40, 43, 46, 47, 48, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 75, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 98, 99, 103, 104, 109, 112, 116, 128, 136, 140, 144, 149, 152, 156, 160, 196, 201, 204, 209, 223, 227, 265, 279, 305, 342, 363, 380, 403, 419, 432, 447, 461, 471, 482, 495, 509, 608, 614, 667, 670, 673, 674, 675, 678, 694], "summary": {"covered_lines": 88, "num_statements": 116, "percent_covered": 75.86206896551724, "percent_covered_display": "76", "missing_lines": 28, "excluded_lines": 1, "percent_statements_covered": 75.86206896551724, "percent_statements_covered_display": "76"}, "missing_lines": [627, 628, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 641, 642, 643, 645, 647, 648, 649, 650, 651, 652, 655, 656, 658, 659, 661, 663], "excluded_lines": [618], "start_line": 1}}}, "src/services/experiment_service.py": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 16, 18, 20, 22, 26, 28, 37, 38, 39, 54, 58, 59, 60, 61, 62, 64, 76], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [42, 43, 44, 47, 48, 52], "excluded_lines": [], "functions": {"ExperimentService.__init__": {"executed_lines": [16], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "ExperimentService.get_active_experiments": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "ExperimentService.get_experiment_variants": {"executed_lines": [26], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "ExperimentService.allocate_variant": {"executed_lines": [37, 38, 39], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [42, 43, 44, 47, 48, 52], "excluded_lines": [], "start_line": 28}, "ExperimentService.get_control_variant": {"executed_lines": [58, 59, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "ExperimentService.record_experiment_result": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 18, 22, 28, 54, 64], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ExperimentService": {"executed_lines": [16, 20, 26, 37, 38, 39, 58, 59, 60, 61, 62, 76], "summary": {"covered_lines": 12, "num_statements": 18, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [42, 43, 44, 47, 48, 52], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 18, 22, 28, 54, 64], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/feature_flags.py": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 25, 28, 42, 52, 53, 54, 55, 56, 57, 58, 60, 62, 74, 75, 77, 78, 79, 80, 90, 91, 94, 108, 115, 116, 117, 120, 121, 122, 124, 127, 129, 130, 131, 133, 134, 140, 142, 144, 145, 146, 148, 149, 150, 151, 152, 153, 155, 156, 160, 167, 168, 170, 172, 173, 175, 200, 201, 203, 212, 213, 214, 216, 226, 227, 228, 229, 230, 232, 242, 244, 259, 261, 262, 263, 265, 266, 268, 269, 270, 271, 272, 273, 275, 276, 277, 281, 292, 294, 295, 297, 298, 301, 304, 305, 306, 307, 308, 311, 313, 323, 324, 325, 326, 327, 328, 329, 331, 341, 342, 343, 344, 345, 346, 347, 349, 360, 361, 362, 363, 364, 365, 366, 368, 375, 377, 384, 386, 393, 395, 402, 404, 414, 415, 416, 417, 419, 420, 421, 422, 423, 430, 433, 443, 444, 445, 448, 456, 459, 470, 473, 488, 489, 490, 491, 492, 494, 495, 497, 499, 502, 515, 516, 517, 518, 519, 520, 522, 524, 527, 530, 534, 538, 539, 540, 541, 542, 543, 546, 547, 548, 552, 598, 610, 611, 613, 614, 615, 616, 617, 625], "summary": {"covered_lines": 201, "num_statements": 207, "percent_covered": 97.10144927536231, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 3, "percent_statements_covered": 97.10144927536231, "percent_statements_covered_display": "97"}, "missing_lines": [157, 158, 279, 424, 425, 426], "excluded_lines": [95, 474, 503], "functions": {"FeatureFlag.__init__": {"executed_lines": [52, 53, 54, 55, 56, 57, 58], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "FeatureFlag.to_dict": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "FeatureFlag.from_dict": {"executed_lines": [77, 78, 79, 80], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "FeatureFlag.__repr__": {"executed_lines": [91], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "FeatureFlagManager.__init__": {"executed_lines": [115, 116, 117, 120, 121, 122], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "FeatureFlagManager._load_from_env": {"executed_lines": [127, 129, 130, 131, 133, 134, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "FeatureFlagManager._load_from_file": {"executed_lines": [144, 145, 146, 148, 149, 150, 151, 152, 153, 155, 156], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [157, 158], "excluded_lines": [], "start_line": 142}, "FeatureFlagManager._compute_percentage_hash": {"executed_lines": [167, 168, 170, 172, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "FeatureFlagManager.register_flag": {"executed_lines": [200, 201, 203, 212, 213, 214], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "FeatureFlagManager.unregister_flag": {"executed_lines": [226, 227, 228, 229, 230], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "FeatureFlagManager.get_flag": {"executed_lines": [242], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "FeatureFlagManager.is_enabled": {"executed_lines": [259, 261, 262, 263, 265, 266, 268, 269, 270, 271, 272, 273, 275, 276, 277], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94"}, "missing_lines": [279], "excluded_lines": [], "start_line": 244}, "FeatureFlagManager.get_variant": {"executed_lines": [292, 294, 295, 297, 298, 301, 304, 305, 306, 307, 308, 311], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281}, "FeatureFlagManager.enable": {"executed_lines": [323, 324, 325, 326, 327, 328, 329], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313}, "FeatureFlagManager.disable": {"executed_lines": [341, 342, 343, 344, 345, 346, 347], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331}, "FeatureFlagManager.set_percentage": {"executed_lines": [360, 361, 362, 363, 364, 365, 366], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "FeatureFlagManager.set_user_context": {"executed_lines": [375], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368}, "FeatureFlagManager.list_flags": {"executed_lines": [384], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "FeatureFlagManager.get_all_enabled": {"executed_lines": [393], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386}, "FeatureFlagManager.export_config": {"executed_lines": [402], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 395}, "FeatureFlagManager.save_config": {"executed_lines": [414, 415, 416, 417, 419, 420, 421, 422, 423], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [424, 425, 426], "excluded_lines": [], "start_line": 404}, "get_feature_flag_manager": {"executed_lines": [443, 444, 445], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 433}, "set_feature_flag_manager": {"executed_lines": [456], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 448}, "is_feature_enabled": {"executed_lines": [470], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "feature_flag": {"executed_lines": [488, 489, 499], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [474], "start_line": 473}, "feature_flag.decorator": {"executed_lines": [490, 497], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488}, "feature_flag.decorator.wrapper": {"executed_lines": [491, 492, 494, 495], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "require_feature": {"executed_lines": [515, 516, 524], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [503], "start_line": 502}, "require_feature.decorator": {"executed_lines": [517, 522], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515}, "require_feature.decorator.wrapper": {"executed_lines": [518, 519, 520], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517}, "initialize_default_flags": {"executed_lines": [610, 611, 613, 614, 615, 616, 617, 625], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 598}, "": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 25, 28, 42, 60, 74, 75, 90, 94, 108, 124, 142, 160, 175, 216, 232, 244, 281, 313, 331, 349, 368, 377, 386, 395, 404, 430, 433, 448, 459, 473, 502, 527, 530, 534, 538, 539, 540, 541, 542, 543, 546, 547, 548, 552, 598], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [95], "start_line": 1}}, "classes": {"FeatureFlagType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "FeatureFlag": {"executed_lines": [52, 53, 54, 55, 56, 57, 58, 62, 77, 78, 79, 80, 91], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "FeatureFlagManager": {"executed_lines": [115, 116, 117, 120, 121, 122, 127, 129, 130, 131, 133, 134, 140, 144, 145, 146, 148, 149, 150, 151, 152, 153, 155, 156, 167, 168, 170, 172, 173, 200, 201, 203, 212, 213, 214, 226, 227, 228, 229, 230, 242, 259, 261, 262, 263, 265, 266, 268, 269, 270, 271, 272, 273, 275, 276, 277, 292, 294, 295, 297, 298, 301, 304, 305, 306, 307, 308, 311, 323, 324, 325, 326, 327, 328, 329, 341, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 366, 375, 384, 393, 402, 414, 415, 416, 417, 419, 420, 421, 422, 423], "summary": {"covered_lines": 102, "num_statements": 108, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94"}, "missing_lines": [157, 158, 279, 424, 425, 426], "excluded_lines": [], "start_line": 94}, "FeatureFlagNotEnabledError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 527}, "FeatureFlags": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534}, "": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 17, 20, 23, 24, 25, 28, 42, 60, 74, 75, 90, 94, 108, 124, 142, 160, 175, 216, 232, 244, 281, 313, 331, 349, 368, 377, 386, 395, 404, 430, 433, 443, 444, 445, 448, 456, 459, 470, 473, 488, 489, 490, 491, 492, 494, 495, 497, 499, 502, 515, 516, 517, 518, 519, 520, 522, 524, 527, 530, 534, 538, 539, 540, 541, 542, 543, 546, 547, 548, 552, 598, 610, 611, 613, 614, 615, 616, 617, 625], "summary": {"covered_lines": 86, "num_statements": 86, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [95, 474, 503], "start_line": 1}}}, "src/services/feedback_analytics.py": {"executed_lines": [7, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 24, 27, 30, 31, 32, 33, 35, 37, 38, 40, 42, 43, 45, 47, 48, 50, 61, 62, 63, 64, 65, 66, 67, 69, 70, 77, 78, 79, 81, 94, 100, 102, 103, 104, 105, 106, 108, 110, 116, 117, 118, 119, 120, 122, 123, 125, 126, 127, 128, 129, 131, 139, 145, 146, 147, 148, 149, 151, 152, 154, 155, 156, 157, 158, 161, 167, 181, 193, 194, 196, 197, 198, 201, 202, 205, 206, 207, 208, 211, 212, 213, 214, 215, 217, 220, 225, 230, 236, 242, 245, 246, 247, 248, 251, 252, 255, 256, 258, 260, 270, 272, 273, 274, 275, 277, 292, 295, 298, 299, 300], "summary": {"covered_lines": 122, "num_statements": 123, "percent_covered": 99.1869918699187, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.1869918699187, "percent_statements_covered_display": "99"}, "missing_lines": [199], "excluded_lines": [], "functions": {"FeedbackAnalyticsService.__init__": {"executed_lines": [31, 32, 33], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "FeedbackAnalyticsService.add_feedback": {"executed_lines": [37, 38], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "FeedbackAnalyticsService.add_bug_report": {"executed_lines": [42, 43], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "FeedbackAnalyticsService.add_feature_request": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "FeedbackAnalyticsService.get_satisfaction_score": {"executed_lines": [61, 62, 63, 64, 65, 66, 67, 69, 70, 77, 78, 79, 81], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "FeedbackAnalyticsService.get_feedback_by_type": {"executed_lines": [100, 102, 103, 104, 105, 106, 108], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "FeedbackAnalyticsService.get_bug_summary": {"executed_lines": [116, 117, 118, 119, 120, 122, 123, 125, 126, 127, 128, 129, 131], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "FeedbackAnalyticsService.get_feature_request_summary": {"executed_lines": [145, 146, 147, 148, 149, 151, 152, 154, 155, 156, 157, 158, 161, 167], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "FeedbackAnalyticsService.get_conversion_feedback_correlation": {"executed_lines": [193, 194, 196, 197, 198, 201, 202, 205, 206, 207, 208, 211, 212, 213, 214, 215, 217, 220, 225, 230], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [199], "excluded_lines": [], "start_line": 181}, "FeedbackAnalyticsService._generate_insights": {"executed_lines": [242, 245, 246, 247, 248, 251, 252, 255, 256, 258], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "FeedbackAnalyticsService.get_weekly_report": {"executed_lines": [270, 272, 273, 274, 275, 277], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "get_feedback_analytics": {"executed_lines": [298, 299, 300], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "": {"executed_lines": [7, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 24, 27, 30, 35, 40, 45, 50, 94, 110, 139, 181, 236, 260, 292, 295], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"FeedbackMetrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "FeedbackAnalyticsService": {"executed_lines": [31, 32, 33, 37, 38, 42, 43, 47, 48, 61, 62, 63, 64, 65, 66, 67, 69, 70, 77, 78, 79, 81, 100, 102, 103, 104, 105, 106, 108, 116, 117, 118, 119, 120, 122, 123, 125, 126, 127, 128, 129, 131, 145, 146, 147, 148, 149, 151, 152, 154, 155, 156, 157, 158, 161, 167, 193, 194, 196, 197, 198, 201, 202, 205, 206, 207, 208, 211, 212, 213, 214, 215, 217, 220, 225, 230, 242, 245, 246, 247, 248, 251, 252, 255, 256, 258, 270, 272, 273, 274, 275, 277], "summary": {"covered_lines": 92, "num_statements": 93, "percent_covered": 98.9247311827957, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.9247311827957, "percent_statements_covered_display": "99"}, "missing_lines": [199], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [7, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 24, 27, 30, 35, 40, 45, 50, 94, 110, 139, 181, 236, 260, 292, 295, 298, 299, 300], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/file_handler.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 65, 77, 80, 83, 84, 85, 87, 88, 90, 107, 110, 116, 118, 119, 132, 139, 141, 148, 149, 151, 158, 159, 162, 168, 170, 183, 193, 194, 197, 198, 199, 202, 203, 204, 207, 208, 210, 211, 215, 216, 219, 220, 221, 226, 228, 237, 239, 240, 241, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 269, 279, 281, 306, 328, 338, 339, 340, 343, 344, 346, 347, 349, 350, 366, 384, 386, 390, 392], "summary": {"covered_lines": 114, "num_statements": 188, "percent_covered": 60.638297872340424, "percent_covered_display": "61", "missing_lines": 74, "excluded_lines": 0, "percent_statements_covered": 60.638297872340424, "percent_statements_covered_display": "61"}, "missing_lines": [120, 125, 160, 174, 175, 176, 181, 212, 217, 222, 223, 224, 256, 257, 260, 261, 262, 264, 265, 266, 270, 271, 272, 273, 274, 276, 277, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 304, 308, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 353, 354, 356, 357, 358, 359, 361, 362, 364, 381, 382], "excluded_lines": [], "functions": {"FileHandler.__init__": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "FileHandler.process_file": {"executed_lines": [107, 110, 116, 118, 119, 132, 139, 141, 148, 149, 151, 158, 159, 162, 168, 170], "summary": {"covered_lines": 16, "num_statements": 23, "percent_covered": 69.56521739130434, "percent_covered_display": "70", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 69.56521739130434, "percent_statements_covered_display": "70"}, "missing_lines": [120, 125, 160, 174, 175, 176, 181], "excluded_lines": [], "start_line": 90}, "FileHandler.validate_jar": {"executed_lines": [193, 194, 197, 198, 199, 202, 203, 204, 207, 208, 210, 211, 215, 216, 219, 220, 221, 226], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78"}, "missing_lines": [212, 217, 222, 223, 224], "excluded_lines": [], "start_line": 183}, "FileHandler.extract_metadata": {"executed_lines": [237, 239, 240, 241, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 269, 279], "summary": {"covered_lines": 17, "num_statements": 32, "percent_covered": 53.125, "percent_covered_display": "53", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 53.125, "percent_statements_covered_display": "53"}, "missing_lines": [256, 257, 260, 261, 262, 264, 265, 266, 270, 271, 272, 273, 274, 276, 277], "excluded_lines": [], "start_line": 228}, "FileHandler._parse_forge_mods_toml": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 304], "excluded_lines": [], "start_line": 281}, "FileHandler._parse_manifest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [308, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326], "excluded_lines": [], "start_line": 306}, "FileHandler.identify_mod_loader": {"executed_lines": [338, 339, 340, 343, 344, 346, 347, 349, 350], "summary": {"covered_lines": 9, "num_statements": 18, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [353, 354, 356, 357, 358, 359, 361, 362, 364], "excluded_lines": [], "start_line": 328}, "FileHandler.virus_scan_placeholder": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [381, 382], "excluded_lines": [], "start_line": 366}, "FileHandler.get_upload_status": {"executed_lines": [386], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 384}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 65, 77, 80, 83, 84, 85, 87, 90, 183, 228, 281, 306, 328, 366, 384, 390, 392], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModLoader": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "ModMetadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "ValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "ProcessingResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "FileHandler": {"executed_lines": [88, 107, 110, 116, 118, 119, 132, 139, 141, 148, 149, 151, 158, 159, 162, 168, 170, 193, 194, 197, 198, 199, 202, 203, 204, 207, 208, 210, 211, 215, 216, 219, 220, 221, 226, 237, 239, 240, 241, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 269, 279, 338, 339, 340, 343, 344, 346, 347, 349, 350, 386], "summary": {"covered_lines": 62, "num_statements": 136, "percent_covered": 45.588235294117645, "percent_covered_display": "46", "missing_lines": 74, "excluded_lines": 0, "percent_statements_covered": 45.588235294117645, "percent_statements_covered_display": "46"}, "missing_lines": [120, 125, 160, 174, 175, 176, 181, 212, 217, 222, 223, 224, 256, 257, 260, 261, 262, 264, 265, 266, 270, 271, 272, 273, 274, 276, 277, 283, 284, 286, 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 304, 308, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 353, 354, 356, 357, 358, 359, 361, 362, 364, 381, 382], "excluded_lines": [], "start_line": 65}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 22, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 45, 46, 49, 50, 51, 54, 55, 58, 59, 60, 61, 62, 65, 77, 80, 83, 84, 85, 87, 90, 183, 228, 281, 306, 328, 366, 384, 390, 392], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/java_parser.py": {"executed_lines": [8, 9, 11, 14, 15, 20, 21, 22, 23, 24, 25, 28, 31, 36, 37, 38, 51, 61, 62, 63, 78, 80, 81, 82, 83, 84, 85, 87, 97, 98, 106, 108, 118, 119, 122, 123, 125, 127, 129, 130, 131, 132, 133, 134, 136, 138, 139, 141, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 165, 168, 174, 181, 182, 183, 184, 185, 187, 194, 195, 196, 197, 198, 200, 208, 210, 213, 214, 215, 216, 217, 228, 230, 231, 232, 239, 242, 244, 247, 249, 252, 254, 256, 264, 274, 276, 286, 289, 294, 295, 297, 308, 310, 311, 317, 326, 328, 330, 331, 333, 334, 335, 337, 340, 341, 343, 344, 345, 346, 348, 349, 350, 353, 354, 357, 358, 359, 360, 361, 363, 364, 366, 368, 376, 377, 378, 379, 380, 400, 402, 404, 411, 413, 415, 416, 417, 419, 422, 423, 424, 425, 428, 433, 434, 436, 437, 439, 441, 443, 444, 445, 446, 447, 448, 450, 451, 453, 455, 457, 458, 459, 461, 463, 464, 465, 466, 467, 468, 469, 471, 472, 474, 475, 477, 479, 486, 488, 538, 540, 542, 543, 546, 547, 550, 551, 552, 554, 557, 568, 569, 572, 583, 584, 586, 590, 591, 593], "summary": {"covered_lines": 207, "num_statements": 256, "percent_covered": 80.859375, "percent_covered_display": "81", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 80.859375, "percent_statements_covered_display": "81"}, "missing_lines": [16, 18, 19, 39, 42, 44, 45, 46, 47, 48, 49, 65, 66, 69, 70, 71, 73, 74, 75, 76, 100, 101, 102, 103, 104, 162, 163, 211, 386, 388, 389, 390, 391, 392, 394, 429, 430, 431, 489, 490, 491, 498, 499, 506, 507, 514, 524, 531, 587], "excluded_lines": [], "functions": {"TreeSitterJavaParser.__init__": {"executed_lines": [37, 38], "summary": {"covered_lines": 2, "num_statements": 10, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [39, 42, 44, 45, 46, 47, 48, 49], "excluded_lines": [], "start_line": 36}, "TreeSitterJavaParser.parse": {"executed_lines": [61, 62, 63], "summary": {"covered_lines": 3, "num_statements": 12, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [65, 66, 69, 70, 71, 73, 74, 75, 76], "excluded_lines": [], "start_line": 51}, "TreeSitterJavaParser._count_error_nodes": {"executed_lines": [80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TreeSitterJavaParser.has_syntax_errors": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 7, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [100, 101, 102, 103, 104], "excluded_lines": [], "start_line": 87}, "TreeSitterJavaParser._tree_to_dict": {"executed_lines": [108, 118, 119, 122, 123, 125], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TreeSitterJavaParser._parse_with_javalang": {"executed_lines": [129, 130, 131, 132, 133, 134], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TreeSitterJavaParser._javalang_to_dict": {"executed_lines": [138, 139, 141, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 165], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [162, 163], "excluded_lines": [], "start_line": 136}, "SemanticAnalyzer.__init__": {"executed_lines": [181, 182, 183, 184, 185], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "SemanticAnalyzer.analyze": {"executed_lines": [194, 195, 196, 197, 198, 200], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "SemanticAnalyzer._build_symbol_table": {"executed_lines": [210, 213, 214, 215, 216, 217], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [211], "excluded_lines": [], "start_line": 208}, "SemanticAnalyzer._resolve_types": {"executed_lines": [230, 231, 232], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "SemanticAnalyzer._extract_method_calls": {"executed_lines": [242], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 239}, "SemanticAnalyzer._extract_field_accesses": {"executed_lines": [247], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "SemanticAnalyzer._build_inheritance_graph": {"executed_lines": [252], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249}, "SemanticAnalyzer._get_inheritance_info": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "SemanticAnalyzer.get_type_info": {"executed_lines": [274], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "SemanticAnalyzer.get_symbol_info": {"executed_lines": [286], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "JavaASTAnalyzer.__init__": {"executed_lines": [295], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294}, "JavaASTAnalyzer.analyze_file": {"executed_lines": [308, 310, 311, 317, 326], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "JavaASTAnalyzer._extract_classes": {"executed_lines": [330, 331, 333, 363, 364], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "JavaASTAnalyzer._extract_classes.traverse": {"executed_lines": [334, 335, 337, 340, 341, 343, 344, 345, 346, 348, 349, 350, 353, 354, 357, 358, 359, 360, 361], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "JavaASTAnalyzer._extract_class_info": {"executed_lines": [368, 376, 377, 378, 379, 380, 400], "summary": {"covered_lines": 7, "num_statements": 14, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [386, 388, 389, 390, 391, 392, 394], "excluded_lines": [], "start_line": 366}, "JavaASTAnalyzer._extract_class_info_javalang": {"executed_lines": [404], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "JavaASTAnalyzer._extract_imports": {"executed_lines": [413, 415, 436, 437], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "JavaASTAnalyzer._extract_imports.traverse": {"executed_lines": [416, 417, 419, 422, 423, 424, 425, 428, 433, 434], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 76.92307692307692, "percent_statements_covered_display": "77"}, "missing_lines": [429, 430, 431], "excluded_lines": [], "start_line": 415}, "JavaASTAnalyzer._get_scoped_identifier_text": {"executed_lines": [441, 443, 450, 451], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 439}, "JavaASTAnalyzer._get_scoped_identifier_text.collect_parts": {"executed_lines": [444, 445, 446, 447, 448], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443}, "JavaASTAnalyzer._extract_annotations": {"executed_lines": [455, 457, 474, 475], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "JavaASTAnalyzer._extract_annotations.traverse": {"executed_lines": [458, 459, 461, 463, 464, 465, 466, 467, 468, 469, 471, 472], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457}, "JavaASTAnalyzer._identify_components": {"executed_lines": [479, 486, 488, 538], "summary": {"covered_lines": 4, "num_statements": 14, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [489, 490, 491, 498, 499, 506, 507, 514, 524, 531], "excluded_lines": [], "start_line": 477}, "JavaASTAnalyzer._is_subclass_of": {"executed_lines": [542, 543, 546, 547, 550, 551, 552, 554], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 540}, "analyze_java_file": {"executed_lines": [568, 569], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 557}, "perform_semantic_analysis": {"executed_lines": [583, 584, 586, 590, 591, 593], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [587], "excluded_lines": [], "start_line": 572}, "": {"executed_lines": [8, 9, 11, 14, 15, 20, 21, 22, 23, 24, 25, 28, 31, 36, 51, 78, 87, 106, 127, 136, 168, 174, 187, 208, 228, 239, 244, 249, 254, 264, 276, 289, 294, 297, 328, 366, 402, 411, 439, 453, 477, 540, 557, 572], "summary": {"covered_lines": 44, "num_statements": 47, "percent_covered": 93.61702127659575, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.61702127659575, "percent_statements_covered_display": "94"}, "missing_lines": [16, 18, 19], "excluded_lines": [], "start_line": 1}}, "classes": {"TreeSitterJavaParser": {"executed_lines": [37, 38, 61, 62, 63, 80, 81, 82, 83, 84, 85, 97, 98, 108, 118, 119, 122, 123, 125, 129, 130, 131, 132, 133, 134, 138, 139, 141, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 165], "summary": {"covered_lines": 40, "num_statements": 64, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [39, 42, 44, 45, 46, 47, 48, 49, 65, 66, 69, 70, 71, 73, 74, 75, 76, 100, 101, 102, 103, 104, 162, 163], "excluded_lines": [], "start_line": 31}, "SemanticAnalyzer": {"executed_lines": [181, 182, 183, 184, 185, 194, 195, 196, 197, 198, 200, 210, 213, 214, 215, 216, 217, 230, 231, 232, 242, 247, 252, 256, 274, 286], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.29629629629629, "percent_statements_covered_display": "96"}, "missing_lines": [211], "excluded_lines": [], "start_line": 168}, "JavaASTAnalyzer": {"executed_lines": [295, 308, 310, 311, 317, 326, 330, 331, 333, 334, 335, 337, 340, 341, 343, 344, 345, 346, 348, 349, 350, 353, 354, 357, 358, 359, 360, 361, 363, 364, 368, 376, 377, 378, 379, 380, 400, 404, 413, 415, 416, 417, 419, 422, 423, 424, 425, 428, 433, 434, 436, 437, 441, 443, 444, 445, 446, 447, 448, 450, 451, 455, 457, 458, 459, 461, 463, 464, 465, 466, 467, 468, 469, 471, 472, 474, 475, 479, 486, 488, 538, 542, 543, 546, 547, 550, 551, 552, 554], "summary": {"covered_lines": 89, "num_statements": 109, "percent_covered": 81.65137614678899, "percent_covered_display": "82", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 81.65137614678899, "percent_statements_covered_display": "82"}, "missing_lines": [386, 388, 389, 390, 391, 392, 394, 429, 430, 431, 489, 490, 491, 498, 499, 506, 507, 514, 524, 531], "excluded_lines": [], "start_line": 289}, "": {"executed_lines": [8, 9, 11, 14, 15, 20, 21, 22, 23, 24, 25, 28, 31, 36, 51, 78, 87, 106, 127, 136, 168, 174, 187, 208, 228, 239, 244, 249, 254, 264, 276, 289, 294, 297, 328, 366, 402, 411, 439, 453, 477, 540, 557, 568, 569, 572, 583, 584, 586, 590, 591, 593], "summary": {"covered_lines": 52, "num_statements": 56, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [16, 18, 19, 587], "excluded_lines": [], "start_line": 1}}}, "src/services/job_manager.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 43, 46, 47, 48, 51, 54, 55, 58, 59, 62, 63, 64, 65, 66, 68, 69, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 97, 98, 100, 101, 102, 105, 126, 127, 128, 130, 131, 132, 133, 135, 141, 147, 166, 167, 169, 178, 179, 181, 189, 190, 194, 197, 198, 206, 208, 209, 211, 221, 222, 224, 225, 226, 228, 231, 233, 250, 251, 254, 260, 261, 262, 263, 264, 266, 268, 285, 286, 289, 290, 291, 292, 294, 295, 297, 304, 319, 320, 323, 324, 325, 326, 327, 328, 330, 331, 333, 341, 344, 346, 361, 362, 365, 366, 367, 368, 369, 371, 372, 374, 382, 385, 387, 397, 398, 401, 404, 405, 406, 407, 409, 410, 412, 419, 449, 452, 460], "summary": {"covered_lines": 152, "num_statements": 180, "percent_covered": 84.44444444444444, "percent_covered_display": "84", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 84.44444444444444, "percent_statements_covered_display": "84"}, "missing_lines": [137, 138, 139, 143, 144, 145, 229, 287, 321, 342, 363, 383, 399, 402, 426, 428, 429, 430, 432, 440, 441, 442, 443, 444, 445, 455, 456, 457], "excluded_lines": [], "functions": {"JobOptions.to_dict": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "Job.to_dict": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "Job.from_dict": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "JobManager.__init__": {"executed_lines": [131, 132, 133], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "JobManager._get_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [137, 138, 139], "excluded_lines": [], "start_line": 135}, "JobManager._get_queue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [143, 144, 145], "excluded_lines": [], "start_line": 141}, "JobManager.create_job": {"executed_lines": [166, 167, 169, 178, 179, 181, 189, 190, 194, 197, 198, 206, 208, 209], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "JobManager.get_job": {"executed_lines": [221, 222, 224, 225, 226, 228, 231], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [229], "excluded_lines": [], "start_line": 211}, "JobManager.list_jobs": {"executed_lines": [250, 251, 254, 260, 261, 262, 263, 264, 266], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "JobManager.update_progress": {"executed_lines": [285, 286, 289, 290, 291, 292, 294, 295, 297], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [287], "excluded_lines": [], "start_line": 268}, "JobManager.complete_job": {"executed_lines": [319, 320, 323, 324, 325, 326, 327, 328, 330, 331, 333, 341, 344], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 86.66666666666667, "percent_statements_covered_display": "87"}, "missing_lines": [321, 342], "excluded_lines": [], "start_line": 304}, "JobManager.fail_job": {"executed_lines": [361, 362, 365, 366, 367, 368, 369, 371, 372, 374, 382, 385], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [363, 383], "excluded_lines": [], "start_line": 346}, "JobManager.cancel_job": {"executed_lines": [397, 398, 401, 404, 405, 406, 407, 409, 410, 412], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [399, 402], "excluded_lines": [], "start_line": 387}, "JobManager._send_webhook": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [426, 428, 429, 430, 432, 440, 441, 442, 443, 444, 445], "excluded_lines": [], "start_line": 419}, "get_job_manager": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [455, 456, 457], "excluded_lines": [], "start_line": 452}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 43, 46, 47, 48, 51, 54, 55, 58, 59, 62, 63, 64, 65, 66, 68, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 100, 101, 105, 126, 127, 128, 130, 135, 141, 147, 211, 233, 268, 304, 346, 387, 419, 449, 452, 460], "summary": {"covered_lines": 71, "num_statements": 71, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JobStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ConversionMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TargetVersion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "OutputFormat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "JobOptions": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "Job": {"executed_lines": [97, 98, 102], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "JobManager": {"executed_lines": [131, 132, 133, 166, 167, 169, 178, 179, 181, 189, 190, 194, 197, 198, 206, 208, 209, 221, 222, 224, 225, 226, 228, 231, 250, 251, 254, 260, 261, 262, 263, 264, 266, 285, 286, 289, 290, 291, 292, 294, 295, 297, 319, 320, 323, 324, 325, 326, 327, 328, 330, 331, 333, 341, 344, 361, 362, 365, 366, 367, 368, 369, 371, 372, 374, 382, 385, 397, 398, 401, 404, 405, 406, 407, 409, 410, 412], "summary": {"covered_lines": 77, "num_statements": 102, "percent_covered": 75.49019607843137, "percent_covered_display": "75", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 75.49019607843137, "percent_statements_covered_display": "75"}, "missing_lines": [137, 138, 139, 143, 144, 145, 229, 287, 321, 342, 363, 383, 399, 402, 426, 428, 429, 430, 432, 440, 441, 442, 443, 444, 445], "excluded_lines": [], "start_line": 105}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 29, 30, 31, 32, 35, 38, 39, 40, 43, 46, 47, 48, 51, 54, 55, 58, 59, 62, 63, 64, 65, 66, 68, 78, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 96, 100, 101, 105, 126, 127, 128, 130, 135, 141, 147, 211, 233, 268, 304, 346, 387, 419, 449, 452, 460], "summary": {"covered_lines": 71, "num_statements": 74, "percent_covered": 95.94594594594595, "percent_covered_display": "96", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 95.94594594594595, "percent_statements_covered_display": "96"}, "missing_lines": [455, 456, 457], "excluded_lines": [], "start_line": 1}}}, "src/services/logging_middleware.py": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 32, 40, 41, 50, 54, 58, 61, 64, 67, 76, 82, 84, 87, 90, 98, 99, 101, 120, 122, 124, 127, 135, 136, 138, 142, 143, 147, 149, 157, 158, 159, 161, 163], "summary": {"covered_lines": 43, "num_statements": 49, "percent_covered": 87.75510204081633, "percent_covered_display": "88", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 87.75510204081633, "percent_statements_covered_display": "88"}, "missing_lines": [55, 103, 105, 107, 116, 144], "excluded_lines": [], "functions": {"LoggingMiddleware.__init__": {"executed_lines": [40, 41], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "LoggingMiddleware.dispatch": {"executed_lines": [54, 58, 61, 64, 67, 76, 82, 84, 87, 90, 98, 99, 101, 120], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [55, 103, 105, 107, 116], "excluded_lines": [], "start_line": 50}, "LoggingMiddleware._should_exclude": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "RequestContextMiddleware.__init__": {"executed_lines": [136], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "RequestContextMiddleware.dispatch": {"executed_lines": [142, 143, 147, 149, 157, 158, 159, 161, 163], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [144], "excluded_lines": [], "start_line": 138}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 32, 50, 122, 127, 135, 138], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LoggingMiddleware": {"executed_lines": [40, 41, 54, 58, 61, 64, 67, 76, 82, 84, 87, 90, 98, 99, 101, 120, 124], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 77.27272727272727, "percent_covered_display": "77", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77"}, "missing_lines": [55, 103, 105, 107, 116], "excluded_lines": [], "start_line": 21}, "RequestContextMiddleware": {"executed_lines": [136, 142, 143, 147, 149, 157, 158, 159, 161, 163], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [144], "excluded_lines": [], "start_line": 127}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 16, 18, 21, 32, 50, 122, 127, 135, 138], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/metrics.py": {"executed_lines": [8, 15, 16, 17, 18, 21, 28, 36, 49, 57, 66, 73, 84, 92, 105, 113, 125, 133, 146, 159, 171, 178, 185, 193, 200, 211, 219, 226, 234, 246, 254, 262, 270, 282, 285, 286, 288, 289, 290, 291, 292, 293, 294, 296, 297, 298, 300, 301, 302, 303, 304, 305, 307, 315, 316, 317, 319, 322, 323, 329, 330, 331, 337, 338, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 356, 357, 362, 363, 365, 367, 368, 369, 384, 392, 398, 423, 431, 438, 446, 451, 456, 461, 466, 475, 478, 489, 502, 510, 513, 522, 523, 528, 537, 540, 547, 550, 560, 563, 564, 566, 598], "summary": {"covered_lines": 114, "num_statements": 157, "percent_covered": 72.61146496815287, "percent_covered_display": "73", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 72.61146496815287, "percent_statements_covered_display": "73"}, "missing_lines": [324, 332, 394, 395, 412, 416, 417, 420, 425, 427, 428, 433, 434, 435, 440, 442, 443, 448, 453, 458, 463, 486, 497, 552, 567, 568, 569, 572, 573, 576, 579, 581, 583, 584, 585, 587, 590, 593, 596, 601, 604, 610, 611], "excluded_lines": [], "functions": {"MetricsTracker.__new__": {"executed_lines": [289, 290, 291, 292, 293, 294], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288}, "MetricsTracker.__init__": {"executed_lines": [297, 298, 300, 301, 302, 303, 304, 305], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "MetricsTracker.record_conversion": {"executed_lines": [315, 316, 317, 319, 322, 323, 329, 330, 331, 337, 338, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 356, 357, 362, 363], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [324, 332], "excluded_lines": [], "start_line": 307}, "MetricsTracker.get_stats": {"executed_lines": [367, 368, 369], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "record_http_request": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [394, 395], "excluded_lines": [], "start_line": 392}, "record_conversion_job": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [412, 416, 417, 420], "excluded_lines": [], "start_line": 398}, "record_agent_execution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [425, 427, 428], "excluded_lines": [], "start_line": 423}, "record_llm_usage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [433, 434, 435], "excluded_lines": [], "start_line": 431}, "record_asset_processed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [440, 442, 443], "excluded_lines": [], "start_line": 438}, "record_db_operation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [448], "excluded_lines": [], "start_line": 446}, "record_cache_operation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [453], "excluded_lines": [], "start_line": 451}, "update_queue_size": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [458], "excluded_lines": [], "start_line": 456}, "update_active_conversions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [463], "excluded_lines": [], "start_line": 461}, "record_error": {"executed_lines": [475], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 466}, "record_retry_attempt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [486], "excluded_lines": [], "start_line": 478}, "record_successful_retry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [497], "excluded_lines": [], "start_line": 489}, "record_rate_limit_hit": {"executed_lines": [510], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 502}, "record_rate_limit_request": {"executed_lines": [522, 523], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513}, "update_rate_limit_usage": {"executed_lines": [537], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528}, "update_active_rate_limit_clients": {"executed_lines": [547], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 540}, "get_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [552], "excluded_lines": [], "start_line": 550}, "MetricsMiddleware.__init__": {"executed_lines": [564], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 563}, "MetricsMiddleware.__call__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [567, 568, 569, 572, 573, 576, 579, 581, 587, 590, 593, 596], "excluded_lines": [], "start_line": 566}, "MetricsMiddleware.__call__.send_wrapper": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [583, 584, 585], "excluded_lines": [], "start_line": 581}, "MetricsMiddleware._normalize_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [601, 604, 610, 611], "excluded_lines": [], "start_line": 598}, "": {"executed_lines": [8, 15, 16, 17, 18, 21, 28, 36, 49, 57, 66, 73, 84, 92, 105, 113, 125, 133, 146, 159, 171, 178, 185, 193, 200, 211, 219, 226, 234, 246, 254, 262, 270, 282, 285, 286, 288, 296, 307, 365, 384, 392, 398, 423, 431, 438, 446, 451, 456, 461, 466, 478, 489, 502, 513, 528, 540, 550, 560, 563, 566, 598], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"MetricsTracker": {"executed_lines": [289, 290, 291, 292, 293, 294, 297, 298, 300, 301, 302, 303, 304, 305, 315, 316, 317, 319, 322, 323, 329, 330, 331, 337, 338, 339, 340, 343, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 356, 357, 362, 363, 367, 368, 369], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 95.74468085106383, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96"}, "missing_lines": [324, 332], "excluded_lines": [], "start_line": 282}, "MetricsMiddleware": {"executed_lines": [564], "summary": {"covered_lines": 1, "num_statements": 20, "percent_covered": 5.0, "percent_covered_display": "5", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 5.0, "percent_statements_covered_display": "5"}, "missing_lines": [567, 568, 569, 572, 573, 576, 579, 581, 583, 584, 585, 587, 590, 593, 596, 601, 604, 610, 611], "excluded_lines": [], "start_line": 560}, "": {"executed_lines": [8, 15, 16, 17, 18, 21, 28, 36, 49, 57, 66, 73, 84, 92, 105, 113, 125, 133, 146, 159, 171, 178, 185, 193, 200, 211, 219, 226, 234, 246, 254, 262, 270, 282, 285, 286, 288, 296, 307, 365, 384, 392, 398, 423, 431, 438, 446, 451, 456, 461, 466, 475, 478, 489, 502, 510, 513, 522, 523, 528, 537, 540, 547, 550, 560, 563, 566, 598], "summary": {"covered_lines": 68, "num_statements": 90, "percent_covered": 75.55555555555556, "percent_covered_display": "76", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 75.55555555555556, "percent_statements_covered_display": "76"}, "missing_lines": [394, 395, 412, 416, 417, 420, 425, 427, 428, 433, 434, 435, 440, 442, 443, 448, 453, 458, 463, 486, 497, 552], "excluded_lines": [], "start_line": 1}}}, "src/services/mod_import_service.py": {"executed_lines": [7, 8, 10, 11, 14, 17, 18, 19, 22, 25, 26, 27, 29, 39, 40, 42, 44, 45, 46, 47, 49, 51, 61, 63, 64, 65, 66, 68, 70, 95, 103, 104, 105, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130, 131, 134, 135, 136, 137, 138, 144, 145, 146, 152, 153, 155, 156, 158, 160, 175, 177, 178, 179, 180, 182, 183, 184, 185, 186, 188, 189, 191, 193, 212, 213, 214, 215, 216, 220, 221, 225, 242, 243, 244, 245, 247, 248, 250, 252, 265, 267, 268, 269, 270, 271, 273, 274, 275, 279, 283], "summary": {"covered_lines": 99, "num_statements": 104, "percent_covered": 95.1923076923077, "percent_covered_display": "95", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.1923076923077, "percent_statements_covered_display": "95"}, "missing_lines": [217, 218, 223, 276, 277], "excluded_lines": [], "functions": {"ModImportService.__init__": {"executed_lines": [26, 27], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ModImportService.detect_platform": {"executed_lines": [39, 40, 42, 44, 45, 46, 47, 49], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "ModImportService.parse_url": {"executed_lines": [61, 63, 64, 65, 66, 68], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "ModImportService.search_mods": {"executed_lines": [95, 103, 104, 105, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130, 131, 134, 135, 136, 137, 138, 144, 145, 146, 152, 153, 155, 156, 158], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "ModImportService.get_mod_info": {"executed_lines": [175, 177, 178, 179, 180, 182, 183, 184, 185, 186, 188, 189, 191], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "ModImportService.get_mod_versions": {"executed_lines": [212, 213, 214, 215, 216, 220, 221], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [217, 218, 223], "excluded_lines": [], "start_line": 193}, "ModImportService.get_download_url": {"executed_lines": [242, 243, 244, 245, 247, 248, 250], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "ModImportService.get_categories": {"executed_lines": [265, 267, 268, 269, 270, 271, 273, 274, 275, 279], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [276, 277], "excluded_lines": [], "start_line": 252}, "": {"executed_lines": [7, 8, 10, 11, 14, 17, 18, 19, 22, 25, 29, 51, 70, 160, 193, 225, 252, 283], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModPlatform": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "ModImportService": {"executed_lines": [26, 27, 39, 40, 42, 44, 45, 46, 47, 49, 61, 63, 64, 65, 66, 68, 95, 103, 104, 105, 112, 113, 114, 115, 118, 119, 120, 128, 129, 130, 131, 134, 135, 136, 137, 138, 144, 145, 146, 152, 153, 155, 156, 158, 175, 177, 178, 179, 180, 182, 183, 184, 185, 186, 188, 189, 191, 212, 213, 214, 215, 216, 220, 221, 242, 243, 244, 245, 247, 248, 250, 265, 267, 268, 269, 270, 271, 273, 274, 275, 279], "summary": {"covered_lines": 81, "num_statements": 86, "percent_covered": 94.18604651162791, "percent_covered_display": "94", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 94.18604651162791, "percent_statements_covered_display": "94"}, "missing_lines": [217, 218, 223, 276, 277], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [7, 8, 10, 11, 14, 17, 18, 19, 22, 25, 29, 51, 70, 160, 193, 225, 252, 283], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/mode_classifier.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 182, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 182, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 19, 34, 37, 44, 45, 82, 92, 94, 95, 96, 97, 100, 101, 102, 103, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 139, 140, 141, 144, 147, 150, 152, 153, 155, 157, 159, 161, 163, 167, 169, 171, 172, 173, 174, 175, 177, 179, 180, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 195, 197, 199, 200, 208, 209, 217, 218, 226, 227, 235, 236, 244, 247, 254, 255, 257, 268, 271, 274, 277, 280, 283, 293, 295, 302, 303, 305, 306, 307, 308, 312, 313, 315, 316, 320, 321, 324, 326, 328, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 344, 345, 346, 349, 352, 353, 354, 355, 356, 357, 358, 359, 361, 367, 369, 371, 372, 374, 375, 376, 377, 378, 379, 381, 382, 384, 386, 394, 396, 398, 400, 406, 409, 416, 418, 420, 422, 469, 472, 482, 483, 484, 485, 487, 502, 505, 507, 508, 510, 511, 513, 514, 515, 517, 520, 525, 529, 531, 533, 535, 537, 541, 544, 547, 548, 549], "excluded_lines": [], "functions": {"FeatureExtractionAgent.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45], "excluded_lines": [], "start_line": 44}, "FeatureExtractionAgent.extract_from_jar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [92, 94, 95, 96, 97, 100, 101, 102, 103, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 139, 140, 141, 144, 147, 150, 152, 153, 155], "excluded_lines": [], "start_line": 82}, "FeatureExtractionAgent.extract_from_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [159], "excluded_lines": [], "start_line": 157}, "FeatureExtractionAgent._count_dependencies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [163, 167], "excluded_lines": [], "start_line": 161}, "FeatureExtractionAgent._check_pattern": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [171, 172, 173, 174, 175], "excluded_lines": [], "start_line": 169}, "FeatureExtractionAgent._detect_mod_loader": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [179, 180, 181, 182, 183, 184, 185], "excluded_lines": [], "start_line": 177}, "FeatureExtractionAgent._extract_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [189, 190, 191, 192, 193], "excluded_lines": [], "start_line": 187}, "FeatureExtractionAgent._build_complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [197, 199, 200, 208, 209, 217, 218, 226, 227, 235, 236, 244], "excluded_lines": [], "start_line": 195}, "ClassifierAgent.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [255], "excluded_lines": [], "start_line": 254}, "ClassifierAgent.classify": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [268, 271, 274, 277, 280, 283, 293], "excluded_lines": [], "start_line": 257}, "ClassifierAgent._apply_rules": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [302, 303, 305, 306, 307, 308, 312, 313, 315, 316, 320, 321, 324, 326], "excluded_lines": [], "start_line": 295}, "ClassifierAgent._rule_matches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [330, 331, 332, 333, 334, 335, 336, 337], "excluded_lines": [], "start_line": 328}, "ClassifierAgent._calculate_alternatives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [342, 344, 345, 346, 349, 352, 353, 354, 355, 356, 357, 358, 359, 361, 367], "excluded_lines": [], "start_line": 339}, "ClassifierAgent._calculate_convertible_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [371, 372, 374, 375, 376, 377, 378, 379, 381, 382], "excluded_lines": [], "start_line": 369}, "ClassifierAgent._estimate_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [386, 394, 396], "excluded_lines": [], "start_line": 384}, "ClassifierAgent._get_automation_level": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [400, 406], "excluded_lines": [], "start_line": 398}, "RouterAgent.get_pipeline_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [418], "excluded_lines": [], "start_line": 416}, "RouterAgent.get_recommended_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [422, 469], "excluded_lines": [], "start_line": 420}, "ModeClassifier.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [483, 484, 485], "excluded_lines": [], "start_line": 482}, "ModeClassifier.classify": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [502, 505, 507, 508, 510, 511, 513, 514, 515, 517, 520, 525, 529], "excluded_lines": [], "start_line": 487}, "ModeClassifier.get_pipeline_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [533], "excluded_lines": [], "start_line": 531}, "ModeClassifier.get_recommended_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [537], "excluded_lines": [], "start_line": 535}, "get_mode_classifier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [547, 548, 549], "excluded_lines": [], "start_line": 544}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 36, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 19, 34, 37, 44, 82, 157, 161, 169, 177, 187, 195, 247, 254, 257, 295, 328, 339, 369, 384, 398, 409, 416, 420, 472, 482, 487, 531, 535, 541, 544], "excluded_lines": [], "start_line": 1}}, "classes": {"FeatureExtractionAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 62, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 92, 94, 95, 96, 97, 100, 101, 102, 103, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 139, 140, 141, 144, 147, 150, 152, 153, 155, 159, 163, 167, 171, 172, 173, 174, 175, 179, 180, 181, 182, 183, 184, 185, 189, 190, 191, 192, 193, 197, 199, 200, 208, 209, 217, 218, 226, 227, 235, 236, 244], "excluded_lines": [], "start_line": 37}, "ClassifierAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [255, 268, 271, 274, 277, 280, 283, 293, 302, 303, 305, 306, 307, 308, 312, 313, 315, 316, 320, 321, 324, 326, 330, 331, 332, 333, 334, 335, 336, 337, 342, 344, 345, 346, 349, 352, 353, 354, 355, 356, 357, 358, 359, 361, 367, 371, 372, 374, 375, 376, 377, 378, 379, 381, 382, 386, 394, 396, 400, 406], "excluded_lines": [], "start_line": 247}, "RouterAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [418, 422, 469], "excluded_lines": [], "start_line": 409}, "ModeClassifier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [483, 484, 485, 502, 505, 507, 508, 510, 511, 513, 514, 515, 517, 520, 525, 529, 533, 537], "excluded_lines": [], "start_line": 472}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 39, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 39, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 13, 14, 15, 16, 17, 19, 34, 37, 44, 82, 157, 161, 169, 177, 187, 195, 247, 254, 257, 295, 328, 339, 369, 384, 398, 409, 416, 420, 472, 482, 487, 531, 535, 541, 544, 547, 548, 549], "excluded_lines": [], "start_line": 1}}}, "src/services/modpack_parser.py": {"executed_lines": [26, 27, 28, 29, 30, 31, 33, 36, 37, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 63, 65, 66, 68, 71, 72, 75, 76, 77, 78, 80, 84, 89, 92, 93, 95, 96, 98, 122, 124, 126, 127, 128, 132, 134, 177, 181, 182, 183, 189, 190, 197, 198, 199, 200, 203, 204, 205, 208, 209, 210, 216, 217, 220, 234, 235, 238, 242, 244, 249, 256, 266, 269, 274, 275, 276, 277, 278, 287, 315, 318, 319, 321, 331, 332, 334, 335, 337, 339, 341, 343, 345, 346, 347, 348, 349, 352, 353, 356, 357, 360, 361, 363, 364, 366, 372, 373, 375, 387, 396, 397, 400, 410, 412, 413], "summary": {"covered_lines": 121, "num_statements": 167, "percent_covered": 72.45508982035928, "percent_covered_display": "72", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 72.45508982035928, "percent_statements_covered_display": "72"}, "missing_lines": [82, 86, 112, 113, 116, 117, 120, 129, 130, 136, 138, 140, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 191, 239, 285, 305, 307, 308, 310, 312, 416], "excluded_lines": [], "functions": {"CurseForgeManifest.mod_count": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "CurseForgeManifest.required_mod_count": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "ParsedModpack.get_mod_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82], "excluded_lines": [], "start_line": 80}, "ParsedModpack.get_required_mod_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [86], "excluded_lines": [], "start_line": 84}, "CurseForgeModpackParser.__init__": {"executed_lines": [96], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "CurseForgeModpackParser.parse_from_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112, 113, 116, 117, 120], "excluded_lines": [], "start_line": 98}, "CurseForgeModpackParser._parse_from_manifest": {"executed_lines": [124, 126, 127, 128, 132], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [129, 130], "excluded_lines": [], "start_line": 122}, "CurseForgeModpackParser._parse_from_zip": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 138, 140, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175], "excluded_lines": [], "start_line": 134}, "CurseForgeModpackParser._parse_manifest_data": {"executed_lines": [181, 182, 183, 189, 190, 197, 198, 199, 200, 203, 204, 205, 208, 209, 210, 216, 217, 220, 234, 235, 238, 242, 244, 249], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92"}, "missing_lines": [191, 239], "excluded_lines": [], "start_line": 177}, "CurseForgeModpackParser.parse_from_url": {"executed_lines": [266, 269, 274, 275, 276, 277, 278], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [285], "excluded_lines": [], "start_line": 256}, "CurseForgeModpackParser.get_dependency_tree": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [305, 307, 308, 310, 312], "excluded_lines": [], "start_line": 287}, "ModrinthModpackParser.__init__": {"executed_lines": [319], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318}, "ModrinthModpackParser.parse_from_file": {"executed_lines": [331, 332, 334, 335, 337], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "ModrinthModpackParser._parse_mrpack": {"executed_lines": [341, 343, 345, 346, 347, 348, 349, 352, 353, 356, 357, 360, 361, 363, 364, 366, 372, 373, 375, 387], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339}, "parse_modpack": {"executed_lines": [410, 412, 413], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [416], "excluded_lines": [], "start_line": 400}, "": {"executed_lines": [26, 27, 28, 29, 30, 31, 33, 36, 37, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 65, 66, 71, 72, 75, 76, 77, 78, 80, 84, 89, 92, 93, 95, 98, 122, 134, 177, 256, 287, 315, 318, 321, 339, 396, 397, 400], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModpackFile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "CurseForgeManifest": {"executed_lines": [63, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "ParsedModpack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 86], "excluded_lines": [], "start_line": 72}, "CurseForgeModpackParser": {"executed_lines": [96, 124, 126, 127, 128, 132, 181, 182, 183, 189, 190, 197, 198, 199, 200, 203, 204, 205, 208, 209, 210, 216, 217, 220, 234, 235, 238, 242, 244, 249, 266, 269, 274, 275, 276, 277, 278], "summary": {"covered_lines": 37, "num_statements": 80, "percent_covered": 46.25, "percent_covered_display": "46", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 46.25, "percent_statements_covered_display": "46"}, "missing_lines": [112, 113, 116, 117, 120, 129, 130, 136, 138, 140, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 191, 239, 285, 305, 307, 308, 310, 312], "excluded_lines": [], "start_line": 89}, "ModrinthModpackParser": {"executed_lines": [319, 331, 332, 334, 335, 337, 341, 343, 345, 346, 347, 348, 349, 352, 353, 356, 357, 360, 361, 363, 364, 366, 372, 373, 375, 387], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "": {"executed_lines": [26, 27, 28, 29, 30, 31, 33, 36, 37, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 65, 66, 71, 72, 75, 76, 77, 78, 80, 84, 89, 92, 93, 95, 98, 122, 134, 177, 256, 287, 315, 318, 321, 339, 396, 397, 400, 410, 412, 413], "summary": {"covered_lines": 56, "num_statements": 57, "percent_covered": 98.24561403508773, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.24561403508773, "percent_statements_covered_display": "98"}, "missing_lines": [416], "excluded_lines": [], "start_line": 1}}}, "src/services/modrinth_service.py": {"executed_lines": [8, 9, 10, 11, 13, 16, 17, 19, 22, 25, 26, 27, 28, 32, 33, 35, 58, 60, 68, 69, 70, 71, 72, 74, 75, 77, 78, 79, 85, 86, 87, 88, 89, 91, 101, 103, 104, 105, 110, 111, 112, 113, 114, 116, 133, 135, 136, 137, 138, 141, 142, 143, 149, 150, 155, 165, 167, 168, 169, 174, 175, 180, 195, 198, 199, 200, 202, 204, 211, 213, 214, 215, 220, 221, 226, 233, 235, 236, 237, 242, 243, 248, 263, 266, 267, 270, 275, 276, 277, 278, 279, 280, 285, 292, 296], "summary": {"covered_lines": 95, "num_statements": 110, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 86.36363636363636, "percent_statements_covered_display": "86"}, "missing_lines": [139, 151, 152, 153, 176, 177, 178, 222, 223, 224, 244, 245, 246, 282, 283], "excluded_lines": [], "functions": {"ModrinthService.__init__": {"executed_lines": [26, 27, 28, 32, 33], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ModrinthService.search_mods": {"executed_lines": [58, 60, 68, 69, 70, 71, 72, 74, 75, 77, 78, 79, 85, 86, 87, 88, 89], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "ModrinthService.get_project": {"executed_lines": [101, 103, 104, 105, 110, 111, 112, 113, 114], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "ModrinthService.get_project_versions": {"executed_lines": [133, 135, 136, 137, 138, 141, 142, 143, 149, 150], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [139, 151, 152, 153], "excluded_lines": [], "start_line": 116}, "ModrinthService.get_version": {"executed_lines": [165, 167, 168, 169, 174, 175], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [176, 177, 178], "excluded_lines": [], "start_line": 155}, "ModrinthService.get_file_download_url": {"executed_lines": [195, 198, 199, 200, 202], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "ModrinthService.get_categories": {"executed_lines": [211, 213, 214, 215, 220, 221], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [222, 223, 224], "excluded_lines": [], "start_line": 204}, "ModrinthService.get_loaders": {"executed_lines": [233, 235, 236, 237, 242, 243], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [244, 245, 246], "excluded_lines": [], "start_line": 226}, "ModrinthService.parse_modrinth_url": {"executed_lines": [263, 266, 267, 270, 275, 276, 277, 278, 279, 280, 285, 292], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [282, 283], "excluded_lines": [], "start_line": 248}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 17, 19, 22, 25, 35, 91, 116, 155, 180, 204, 226, 248, 296], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModrinthService": {"executed_lines": [26, 27, 28, 32, 33, 58, 60, 68, 69, 70, 71, 72, 74, 75, 77, 78, 79, 85, 86, 87, 88, 89, 101, 103, 104, 105, 110, 111, 112, 113, 114, 133, 135, 136, 137, 138, 141, 142, 143, 149, 150, 165, 167, 168, 169, 174, 175, 195, 198, 199, 200, 202, 211, 213, 214, 215, 220, 221, 233, 235, 236, 237, 242, 243, 263, 266, 267, 270, 275, 276, 277, 278, 279, 280, 285, 292], "summary": {"covered_lines": 76, "num_statements": 91, "percent_covered": 83.51648351648352, "percent_covered_display": "84", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 83.51648351648352, "percent_statements_covered_display": "84"}, "missing_lines": [139, 151, 152, 153, 176, 177, 178, 222, 223, 224, 244, 245, 246, 282, 283], "excluded_lines": [], "start_line": 22}, "": {"executed_lines": [8, 9, 10, 11, 13, 16, 17, 19, 22, 25, 35, 91, 116, 155, 180, 204, 226, 248, 296], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/one_click_converter.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 164, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [15, 16, 17, 18, 19, 20, 22, 28, 29, 30, 33, 40, 43, 44, 45, 46, 47, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 68, 69, 70, 72, 73, 74, 75, 82, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 101, 104, 105, 106, 107, 108, 109, 110, 117, 125, 126, 127, 128, 130, 140, 141, 146, 148, 150, 153, 156, 159, 161, 162, 163, 164, 166, 168, 174, 176, 177, 180, 181, 182, 183, 184, 185, 187, 188, 190, 192, 198, 200, 201, 204, 210, 212, 213, 214, 215, 218, 224, 225, 229, 231, 237, 239, 240, 243, 244, 245, 246, 248, 249, 263, 270, 271, 272, 275, 277, 279, 281, 283, 284, 286, 293, 304, 305, 306, 308, 321, 324, 327, 330, 340, 341, 342, 343, 345, 347, 349, 351, 357, 359, 360, 362, 363, 365, 366, 369, 376, 391, 403, 405, 406, 407, 409, 410, 411, 416, 430, 433, 436, 437, 438], "excluded_lines": [], "functions": {"PipelineStatus.is_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [66], "excluded_lines": [], "start_line": 65}, "PipelineStatus.is_error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [70], "excluded_lines": [], "start_line": 69}, "PipelineStatus.elapsed_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [74, 75], "excluded_lines": [], "start_line": 73}, "OneClickPipelineSupervisor.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [126, 127, 128], "excluded_lines": [], "start_line": 125}, "OneClickPipelineSupervisor.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [140, 141, 146, 148, 150, 153, 156, 159, 161, 162, 163, 164, 166], "excluded_lines": [], "start_line": 130}, "OneClickPipelineSupervisor._stage_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [174, 176, 177, 180, 181, 182, 183, 184, 185, 187, 188, 190], "excluded_lines": [], "start_line": 168}, "OneClickPipelineSupervisor._stage_classify": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [198, 200, 201, 204, 210, 212, 213, 214, 215, 218, 224, 225, 229], "excluded_lines": [], "start_line": 192}, "OneClickPipelineSupervisor._stage_apply_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 239, 240, 243, 244, 245, 246, 248, 249, 263, 270, 271, 272, 275, 277], "excluded_lines": [], "start_line": 231}, "OneClickPipelineSupervisor._stage_ready": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [281, 283, 284, 286], "excluded_lines": [], "start_line": 279}, "OneClickConverter.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [305, 306], "excluded_lines": [], "start_line": 304}, "OneClickConverter.initiate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [321, 324, 327, 330, 340, 341, 342, 343, 345], "excluded_lines": [], "start_line": 308}, "OneClickConverter.get_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [349], "excluded_lines": [], "start_line": 347}, "OneClickConverter.get_ready_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [357, 359, 360, 362, 363, 365, 366, 369, 376], "excluded_lines": [], "start_line": 351}, "OneClickConverter.learn_from_completion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [403, 405, 406, 407, 409, 410, 411, 416], "excluded_lines": [], "start_line": 391}, "get_one_click_converter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [436, 437, 438], "excluded_lines": [], "start_line": 433}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 68, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 68, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [15, 16, 17, 18, 19, 20, 22, 28, 29, 30, 33, 40, 43, 44, 45, 46, 47, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 68, 69, 72, 73, 82, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 101, 104, 105, 106, 107, 108, 109, 110, 117, 125, 130, 168, 192, 231, 279, 293, 304, 308, 347, 351, 391, 430, 433], "excluded_lines": [], "start_line": 1}}, "classes": {"PipelineStage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "PipelineStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [66, 70, 74, 75], "excluded_lines": [], "start_line": 50}, "OneClickConvertRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "OneClickConvertResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "ReadyToConvert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "OneClickPipelineSupervisor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [126, 127, 128, 140, 141, 146, 148, 150, 153, 156, 159, 161, 162, 163, 164, 166, 174, 176, 177, 180, 181, 182, 183, 184, 185, 187, 188, 190, 198, 200, 201, 204, 210, 212, 213, 214, 215, 218, 224, 225, 229, 237, 239, 240, 243, 244, 245, 246, 248, 249, 263, 270, 271, 272, 275, 277, 281, 283, 284, 286], "excluded_lines": [], "start_line": 117}, "OneClickConverter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [305, 306, 321, 324, 327, 330, 340, 341, 342, 343, 345, 349, 357, 359, 360, 362, 363, 365, 366, 369, 376, 403, 405, 406, 407, 409, 410, 411, 416], "excluded_lines": [], "start_line": 293}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 71, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [15, 16, 17, 18, 19, 20, 22, 28, 29, 30, 33, 40, 43, 44, 45, 46, 47, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 68, 69, 72, 73, 82, 85, 86, 87, 88, 91, 94, 95, 96, 97, 98, 101, 104, 105, 106, 107, 108, 109, 110, 117, 125, 130, 168, 192, 231, 279, 293, 304, 308, 347, 351, 391, 430, 433, 436, 437, 438], "excluded_lines": [], "start_line": 1}}}, "src/services/progress_callback.py": {"executed_lines": [7, 8, 9, 11, 14, 17, 18, 19, 21, 29, 30, 31, 33, 34, 36, 44, 45, 46, 47, 48, 50, 68, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90, 92, 94, 96, 98, 99, 100, 101, 102, 106, 109, 112, 113, 114, 118, 121, 122, 123, 124, 125, 126, 127, 131], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"ProgressCallback.__init__": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ProgressCallback.subscribe": {"executed_lines": [29, 30, 31, 33, 34], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "ProgressCallback.unsubscribe": {"executed_lines": [44, 45, 46, 47, 48], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "ProgressCallback.update_progress": {"executed_lines": [68, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "ProgressCallback.get_progress_history": {"executed_lines": [94], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "ProgressCallback.cleanup_job": {"executed_lines": [98, 99, 100, 101, 102], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "get_progress_callback": {"executed_lines": [112, 113, 114], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "": {"executed_lines": [7, 8, 9, 11, 14, 17, 21, 36, 50, 92, 96, 106, 109, 118, 121, 122, 123, 124, 125, 126, 127, 131], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ProgressCallback": {"executed_lines": [18, 19, 29, 30, 31, 33, 34, 44, 45, 46, 47, 48, 68, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90, 94, 98, 99, 100, 101, 102], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "ConversionStages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "": {"executed_lines": [7, 8, 9, 11, 14, 17, 21, 36, 50, 92, 96, 106, 109, 112, 113, 114, 118, 121, 122, 123, 124, 125, 126, 127, 131], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/rate_limiter.py": {"executed_lines": [10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 29, 32, 33, 36, 37, 38, 40, 41, 44, 45, 48, 49, 50, 51, 53, 55, 56, 59, 65, 66, 67, 68, 69, 70, 72, 84, 86, 87, 89, 92, 93, 94, 96, 99, 100, 101, 103, 105, 110, 112, 113, 115, 117, 129, 130, 132, 134, 135, 137, 139, 143, 145, 146, 149, 179, 180, 182, 184, 188, 191, 192, 196, 197, 198, 199, 202, 204, 205, 206, 208, 209, 214, 224, 226, 227, 228, 230, 250, 251, 261, 266, 267, 268, 271, 286, 291, 294, 295, 298, 299, 300, 301, 302, 305, 311, 315, 317, 318, 319, 321, 326, 345, 348, 351, 352, 355, 356, 359, 360, 361, 362, 364, 368, 371, 375, 376, 377, 379, 382, 394, 404, 407, 413, 420, 424], "summary": {"covered_lines": 136, "num_statements": 176, "percent_covered": 77.27272727272727, "percent_covered_display": "77", "missing_lines": 40, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77"}, "missing_lines": [74, 75, 77, 78, 79, 80, 81, 82, 150, 151, 153, 154, 155, 158, 159, 161, 166, 167, 169, 231, 232, 233, 235, 236, 238, 246, 247, 386, 387, 388, 389, 391, 397, 398, 400, 401, 408, 409, 415, 416], "excluded_lines": [], "functions": {"RateLimitState.reset_window": {"executed_lines": [55, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "RateLimiter.__init__": {"executed_lines": [66, 67, 68, 69, 70], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "RateLimiter.initialize": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [74, 75, 77, 78, 79, 80, 81, 82], "excluded_lines": [], "start_line": 72}, "RateLimiter.close": {"executed_lines": [86, 87], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "RateLimiter._get_client_key": {"executed_lines": [92, 93, 94, 96, 99, 100, 101, 103], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "RateLimiter._get_user_config": {"executed_lines": [110, 112, 113, 115], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "RateLimiter.check_rate_limit": {"executed_lines": [129, 130, 132, 134, 135, 137], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "RateLimiter._check_redis": {"executed_lines": [143, 145, 146, 149, 179, 180, 182], "summary": {"covered_lines": 7, "num_statements": 18, "percent_covered": 38.888888888888886, "percent_covered_display": "39", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 38.888888888888886, "percent_statements_covered_display": "39"}, "missing_lines": [150, 151, 153, 154, 155, 158, 159, 161, 166, 167, 169], "excluded_lines": [], "start_line": 139}, "RateLimiter._check_local": {"executed_lines": [188, 191, 192, 196, 197, 198, 199, 202, 204, 205, 206, 208, 209, 214], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 184}, "RateLimiter.get_rate_limit_status": {"executed_lines": [226, 227, 228, 230, 250, 251], "summary": {"covered_lines": 6, "num_statements": 14, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [231, 232, 233, 235, 236, 238, 246, 247], "excluded_lines": [], "start_line": 224}, "RateLimitMiddleware.__init__": {"executed_lines": [267, 268, 271, 286], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "RateLimitMiddleware.dispatch": {"executed_lines": [294, 295, 298, 299, 300, 301, 302, 305, 311, 315, 317, 318, 319, 321, 326, 345, 348, 351, 352, 355, 356, 359, 360, 361, 362, 364], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "create_global_limiter": {"executed_lines": [375, 376, 377, 379], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371}, "get_rate_limiter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [386, 387, 388, 389, 391], "excluded_lines": [], "start_line": 382}, "init_rate_limiter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [397, 398, 400, 401], "excluded_lines": [], "start_line": 394}, "close_rate_limiter": {"executed_lines": [407], "summary": {"covered_lines": 1, "num_statements": 3, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [408, 409], "excluded_lines": [], "start_line": 404}, "check_rate_limit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [415, 416], "excluded_lines": [], "start_line": 413}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 29, 32, 33, 36, 37, 38, 40, 41, 44, 45, 48, 49, 50, 51, 53, 59, 65, 72, 84, 89, 105, 117, 139, 184, 224, 261, 266, 291, 368, 371, 382, 394, 404, 413, 420, 424], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RateLimitConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "RateLimitState": {"executed_lines": [55, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "RateLimiter": {"executed_lines": [66, 67, 68, 69, 70, 86, 87, 92, 93, 94, 96, 99, 100, 101, 103, 110, 112, 113, 115, 129, 130, 132, 134, 135, 137, 143, 145, 146, 149, 179, 180, 182, 188, 191, 192, 196, 197, 198, 199, 202, 204, 205, 206, 208, 209, 214, 226, 227, 228, 230, 250, 251], "summary": {"covered_lines": 52, "num_statements": 79, "percent_covered": 65.82278481012658, "percent_covered_display": "66", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 65.82278481012658, "percent_statements_covered_display": "66"}, "missing_lines": [74, 75, 77, 78, 79, 80, 81, 82, 150, 151, 153, 154, 155, 158, 159, 161, 166, 167, 169, 231, 232, 233, 235, 236, 238, 246, 247], "excluded_lines": [], "start_line": 59}, "RateLimitMiddleware": {"executed_lines": [267, 268, 271, 286, 294, 295, 298, 299, 300, 301, 302, 305, 311, 315, 317, 318, 319, 321, 326, 345, 348, 351, 352, 355, 356, 359, 360, 361, 362, 364], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 29, 32, 33, 36, 37, 38, 40, 41, 44, 45, 48, 49, 50, 51, 53, 59, 65, 72, 84, 89, 105, 117, 139, 184, 224, 261, 266, 291, 368, 371, 375, 376, 377, 379, 382, 394, 404, 407, 413, 420, 424], "summary": {"covered_lines": 52, "num_statements": 65, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [386, 387, 388, 389, 391, 397, 398, 400, 401, 408, 409, 415, 416], "excluded_lines": [], "start_line": 1}}}, "src/services/report_exporter.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 14, 17, 18, 20, 22, 24, 25, 29, 31, 34, 41, 42, 44, 46, 47, 48, 49, 50, 51, 53, 55, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 81, 86, 88, 90, 93, 95, 97, 100, 103, 106, 109, 116, 118, 120, 122, 287, 290, 293, 303, 324], "summary": {"covered_lines": 59, "num_statements": 86, "percent_covered": 68.6046511627907, "percent_covered_display": "69", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 68.6046511627907, "percent_statements_covered_display": "69"}, "missing_lines": [27, 75, 76, 82, 91, 291, 295, 296, 298, 299, 300, 301, 305, 306, 308, 309, 312, 313, 316, 317, 319, 321, 322, 326, 327, 328, 329], "excluded_lines": [], "functions": {"ReportExporter.__init__": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "ReportExporter.export_to_json": {"executed_lines": [22, 24, 25], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [27], "excluded_lines": [], "start_line": 20}, "ReportExporter.export_to_html": {"executed_lines": [31, 34, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "ReportExporter._escape_report_data": {"executed_lines": [46, 47, 48, 49, 50, 51, 53], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "ReportExporter.export_to_csv": {"executed_lines": [57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 81, 86], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82"}, "missing_lines": [75, 76, 82], "excluded_lines": [], "start_line": 55}, "ReportExporter.create_shareable_link": {"executed_lines": [90, 93], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [91], "excluded_lines": [], "start_line": 88}, "ReportExporter.generate_download_package": {"executed_lines": [97, 100, 103, 106, 109, 116, 118], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "ReportExporter._get_html_template": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "PDFExporter.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [291], "excluded_lines": [], "start_line": 290}, "PDFExporter._check_dependencies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [295, 296, 298, 299, 300, 301], "excluded_lines": [], "start_line": 293}, "PDFExporter.export_to_pdf": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [305, 306, 308, 309, 312, 313, 316, 317, 319, 321, 322], "excluded_lines": [], "start_line": 303}, "PDFExporter.export_to_pdf_base64": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [326, 327, 328, 329], "excluded_lines": [], "start_line": 324}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 14, 17, 20, 29, 44, 55, 88, 95, 120, 287, 290, 293, 303, 324], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ReportExporter": {"executed_lines": [18, 22, 24, 25, 31, 34, 41, 42, 46, 47, 48, 49, 50, 51, 53, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 74, 81, 86, 90, 93, 97, 100, 103, 106, 109, 116, 118, 122], "summary": {"covered_lines": 39, "num_statements": 44, "percent_covered": 88.63636363636364, "percent_covered_display": "89", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 88.63636363636364, "percent_statements_covered_display": "89"}, "missing_lines": [27, 75, 76, 82, 91], "excluded_lines": [], "start_line": 14}, "PDFExporter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [291, 295, 296, 298, 299, 300, 301, 305, 306, 308, 309, 312, 313, 316, 317, 319, 321, 322, 326, 327, 328, 329], "excluded_lines": [], "start_line": 287}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 14, 17, 20, 29, 44, 55, 88, 95, 120, 287, 290, 293, 303, 324], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/report_generator.py": {"executed_lines": [1, 2, 15, 16, 22, 142, 193, 194, 195, 207, 208, 209, 210, 218, 221, 228, 231, 232, 234, 235, 246, 249, 250, 252, 254, 256, 259, 261, 270, 272, 273, 285, 286, 287, 288, 295, 296, 297, 298, 300, 304, 305, 306, 314, 315, 317, 323, 326, 329, 332, 340, 341, 345, 356, 362, 364, 367, 370, 374, 376, 386], "summary": {"covered_lines": 61, "num_statements": 80, "percent_covered": 76.25, "percent_covered_display": "76", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 76.25, "percent_statements_covered_display": "76"}, "missing_lines": [251, 253, 255, 257, 387, 389, 395, 400, 405, 411, 413, 416, 417, 419, 422, 423, 425, 428, 429], "excluded_lines": [], "functions": {"ConversionReportGenerator.generate_summary_report": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194}, "ConversionReportGenerator.generate_feature_analysis": {"executed_lines": [208, 209, 210, 218, 221], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207}, "ConversionReportGenerator.generate_assumptions_report": {"executed_lines": [231, 232, 234, 235, 246, 249, 250, 252, 254, 256, 259, 261, 270], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [251, 253, 255, 257], "excluded_lines": [], "start_line": 228}, "ConversionReportGenerator.generate_developer_log": {"executed_lines": [273], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "ConversionReportGenerator._map_mod_statuses": {"executed_lines": [286, 287, 288, 295, 296, 297, 298], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "ConversionReportGenerator._map_smart_assumptions_prd": {"executed_lines": [304, 305, 306, 314, 315], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "ConversionReportGenerator.create_interactive_report": {"executed_lines": [323, 326, 329, 332, 340, 341, 345], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "ConversionReportGenerator.create_full_conversion_report_prd_style": {"executed_lines": [362, 364, 367, 370, 374, 376], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "": {"executed_lines": [1, 2, 15, 16, 22, 142, 193, 194, 207, 228, 272, 285, 300, 317, 356, 386], "summary": {"covered_lines": 16, "num_statements": 31, "percent_covered": 51.61290322580645, "percent_covered_display": "52", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 51.61290322580645, "percent_statements_covered_display": "52"}, "missing_lines": [387, 389, 395, 400, 405, 411, 413, 416, 417, 419, 422, 423, 425, 428, 429], "excluded_lines": [], "start_line": 1}}, "classes": {"ConversionReportGenerator": {"executed_lines": [195, 208, 209, 210, 218, 221, 231, 232, 234, 235, 246, 249, 250, 252, 254, 256, 259, 261, 270, 273, 286, 287, 288, 295, 296, 297, 298, 304, 305, 306, 314, 315, 323, 326, 329, 332, 340, 341, 345, 362, 364, 367, 370, 374, 376], "summary": {"covered_lines": 45, "num_statements": 49, "percent_covered": 91.83673469387755, "percent_covered_display": "92", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 91.83673469387755, "percent_statements_covered_display": "92"}, "missing_lines": [251, 253, 255, 257], "excluded_lines": [], "start_line": 193}, "": {"executed_lines": [1, 2, 15, 16, 22, 142, 193, 194, 207, 228, 272, 285, 300, 317, 356, 386], "summary": {"covered_lines": 16, "num_statements": 31, "percent_covered": 51.61290322580645, "percent_covered_display": "52", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 51.61290322580645, "percent_statements_covered_display": "52"}, "missing_lines": [387, 389, 395, 400, 405, 411, 413, 416, 417, 419, 422, 423, 425, 428, 429], "excluded_lines": [], "start_line": 1}}}, "src/services/report_models.py": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ModConversionStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "SmartAssumption": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "SummaryReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "FeatureConversionDetail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "FeatureAnalysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "AssumptionDetail": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "AssumptionsReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "LogEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "DeveloperLog": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "InteractiveReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "FullConversionReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "": {"executed_lines": [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 69, 72, 73, 74, 75, 76, 79, 82, 83, 84, 85, 86, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/resource_allocator.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 27, 28, 29, 30, 33, 42, 43, 44, 45, 48, 49, 51, 52, 53, 54, 55, 56, 58, 59, 61, 62, 63, 65, 66, 68, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 85, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 109, 111, 112, 114, 116, 133, 134, 137, 138, 141, 142, 145, 149, 150, 151, 153, 155, 162, 166, 170, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 219, 234, 245, 257, 258, 261, 264, 267, 270, 273, 276, 279, 282, 284, 291, 316, 317, 319, 333, 336, 338, 343, 345, 355, 356, 357, 359, 362, 365, 366, 367, 369, 376, 377, 378, 379, 381, 382, 383, 384, 386, 390, 409, 410, 417, 418, 419, 421, 423, 424, 425, 426, 427, 440, 455, 457, 458, 461, 462, 463, 464, 465, 466, 467, 468, 472, 474, 475, 476, 477, 481, 482, 484, 486, 487, 488, 490, 491, 493, 498, 501, 502, 512, 513, 515, 518, 524, 531, 532, 533, 535, 554, 559, 562, 563, 565, 566, 567, 570, 571, 572, 574, 578, 579, 580, 582, 583, 592, 598, 605, 606, 607, 609, 620, 625, 628, 629, 634, 636, 637, 641, 647, 654, 655, 656, 658, 670, 672, 677, 680, 685, 686, 690, 696, 703, 704, 705, 707, 726, 736, 737, 738, 739, 741, 742, 745, 746, 747, 748, 753, 754, 757, 759, 760, 762, 772, 773, 775, 776, 777, 779, 780, 782, 786, 788, 790, 792, 793, 796, 802, 804, 805, 811, 818, 819, 822, 824, 825, 826, 827, 831, 832, 834, 836, 838, 839, 842, 843, 844, 860, 861, 871, 872, 874, 876, 878, 879, 880, 882, 884, 892, 895, 898, 902, 905, 908, 909, 910, 913, 916, 917, 918, 919, 921, 925], "summary": {"covered_lines": 338, "num_statements": 352, "percent_covered": 96.02272727272727, "percent_covered_display": "96", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 96.02272727272727, "percent_statements_covered_display": "96"}, "missing_lines": [146, 363, 436, 470, 503, 546, 573, 575, 718, 794, 829, 862, 896, 924], "excluded_lines": [], "functions": {"ResourcePool.utilization": {"executed_lines": [61, 62, 63], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "ResourcePool.is_available": {"executed_lines": [68], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "ResourceAllocation.is_active": {"executed_lines": [85], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "WorkerNode.can_accept_work": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "WorkerNode.effective_gpu_memory": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "WorkerNode.allocate_resources": {"executed_lines": [133, 134, 137, 138, 141, 142, 145, 149, 150, 151, 153], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92"}, "missing_lines": [146], "excluded_lines": [], "start_line": 116}, "WorkerNode.release_resources": {"executed_lines": [162, 166, 170], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "ResourceAllocatorStats.__init__": {"executed_lines": [205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "ResourceAllocatorStats.to_dict": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "ResourceAllocator.__init__": {"executed_lines": [257, 258, 261, 264, 267, 270, 273, 276, 279, 282, 284], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "ResourceAllocator.register_node": {"executed_lines": [316, 317, 319, 333, 336, 338, 343], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "ResourceAllocator.unregister_node": {"executed_lines": [355, 356, 357, 359, 362, 365, 366, 367], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [363], "excluded_lines": [], "start_line": 345}, "ResourceAllocator.update_node_status": {"executed_lines": [376, 377, 378, 379, 381, 382, 383, 384, 386], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "ResourceAllocator.create_resource_pool": {"executed_lines": [409, 410, 417, 418, 419], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 390}, "ResourceAllocator.get_pool_stats": {"executed_lines": [423, 424, 425, 426, 427], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [436], "excluded_lines": [], "start_line": 421}, "ResourceAllocator.allocate": {"executed_lines": [455, 457, 458, 461, 462, 463, 464, 465, 466, 467, 468, 472, 474, 475, 476, 477, 481, 482, 484, 486, 487, 488, 490, 491], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [470], "excluded_lines": [], "start_line": 440}, "ResourceAllocator._allocate_round_robin": {"executed_lines": [498, 501, 502, 512, 513, 515, 518, 524, 531, 532, 533, 535], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [503, 546], "excluded_lines": [], "start_line": 493}, "ResourceAllocator._allocate_capacity_based": {"executed_lines": [559, 562, 563, 565, 566, 567, 570, 571, 572, 574, 578, 579, 580, 582, 583, 592, 598, 605, 606, 607, 609], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [573, 575], "excluded_lines": [], "start_line": 554}, "ResourceAllocator._allocate_mode_based": {"executed_lines": [625, 628, 629, 634, 636, 637, 641, 647, 654, 655, 656, 658, 670], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620}, "ResourceAllocator._allocate_priority_based": {"executed_lines": [677, 680, 685, 686, 690, 696, 703, 704, 705, 707], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [718], "excluded_lines": [], "start_line": 672}, "ResourceAllocator.release_allocation": {"executed_lines": [736, 737, 738, 739, 741, 742, 745, 746, 747, 748, 753, 754, 757, 759, 760], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 726}, "ResourceAllocator.release_job_allocations": {"executed_lines": [772, 773, 775, 776, 777, 779, 780, 782], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 762}, "ResourceAllocator.get_allocation": {"executed_lines": [788], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 786}, "ResourceAllocator.get_node_allocations": {"executed_lines": [792, 793, 796], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [794], "excluded_lines": [], "start_line": 790}, "ResourceAllocator.get_job_allocations": {"executed_lines": [804, 805], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 802}, "ResourceAllocator.process_wait_queue": {"executed_lines": [818, 819, 822, 824, 825, 826, 827, 831, 832, 834], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [829], "excluded_lines": [], "start_line": 811}, "ResourceAllocator.get_stats": {"executed_lines": [838, 839, 842, 843, 844, 860, 861, 871, 872, 874], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [862], "excluded_lines": [], "start_line": 836}, "ResourceAllocator.get_available_resources": {"executed_lines": [878, 879, 880, 882, 884], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 876}, "ResourceAllocator.close": {"executed_lines": [895, 898], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [896], "excluded_lines": [], "start_line": 892}, "get_resource_allocator": {"executed_lines": [908, 909, 910], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 905}, "reset_resource_allocator": {"executed_lines": [916, 917, 918, 919, 921, 925], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [924], "excluded_lines": [], "start_line": 913}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 27, 28, 29, 30, 33, 42, 43, 44, 45, 48, 49, 51, 52, 53, 54, 55, 56, 58, 59, 65, 66, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 112, 116, 155, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 204, 217, 234, 245, 291, 345, 369, 390, 421, 440, 493, 554, 620, 672, 726, 762, 786, 790, 802, 811, 836, 876, 892, 902, 905, 913], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "AllocationStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ResourcePool": {"executed_lines": [61, 62, 63, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "ResourceAllocation": {"executed_lines": [85], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "WorkerNode": {"executed_lines": [109, 114, 133, 134, 137, 138, 141, 142, 145, 149, 150, 151, 153, 162, 166, 170], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94"}, "missing_lines": [146], "excluded_lines": [], "start_line": 89}, "ResourceAllocationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "ResourceAllocationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "ResourceAllocatorStats": {"executed_lines": [205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 219], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "ResourceAllocator": {"executed_lines": [257, 258, 261, 264, 267, 270, 273, 276, 279, 282, 284, 316, 317, 319, 333, 336, 338, 343, 355, 356, 357, 359, 362, 365, 366, 367, 376, 377, 378, 379, 381, 382, 383, 384, 386, 409, 410, 417, 418, 419, 423, 424, 425, 426, 427, 455, 457, 458, 461, 462, 463, 464, 465, 466, 467, 468, 472, 474, 475, 476, 477, 481, 482, 484, 486, 487, 488, 490, 491, 498, 501, 502, 512, 513, 515, 518, 524, 531, 532, 533, 535, 559, 562, 563, 565, 566, 567, 570, 571, 572, 574, 578, 579, 580, 582, 583, 592, 598, 605, 606, 607, 609, 625, 628, 629, 634, 636, 637, 641, 647, 654, 655, 656, 658, 670, 677, 680, 685, 686, 690, 696, 703, 704, 705, 707, 736, 737, 738, 739, 741, 742, 745, 746, 747, 748, 753, 754, 757, 759, 760, 772, 773, 775, 776, 777, 779, 780, 782, 788, 792, 793, 796, 804, 805, 818, 819, 822, 824, 825, 826, 827, 831, 832, 834, 838, 839, 842, 843, 844, 860, 861, 871, 872, 874, 878, 879, 880, 882, 884, 895, 898], "summary": {"covered_lines": 181, "num_statements": 193, "percent_covered": 93.78238341968913, "percent_covered_display": "94", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 93.78238341968913, "percent_statements_covered_display": "94"}, "missing_lines": [363, 436, 470, 503, 546, 573, 575, 718, 794, 829, 862, 896], "excluded_lines": [], "start_line": 234}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 25, 27, 28, 29, 30, 33, 42, 43, 44, 45, 48, 49, 51, 52, 53, 54, 55, 56, 58, 59, 65, 66, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 111, 112, 116, 155, 173, 174, 176, 177, 178, 179, 180, 181, 182, 183, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 201, 204, 217, 234, 245, 291, 345, 369, 390, 421, 440, 493, 554, 620, 672, 726, 762, 786, 790, 802, 811, 836, 876, 892, 902, 905, 908, 909, 910, 913, 916, 917, 918, 919, 921, 925], "summary": {"covered_lines": 124, "num_statements": 125, "percent_covered": 99.2, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.2, "percent_statements_covered_display": "99"}, "missing_lines": [924], "excluded_lines": [], "start_line": 1}}}, "src/services/result_storage.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 23, 24, 27, 30, 33, 34, 35, 38, 39, 41, 43, 64, 67, 68, 69, 71, 74, 84, 87, 88, 89, 91, 93, 94, 96, 107, 108, 109, 112, 113, 115, 116, 117, 119, 127, 137, 138, 139, 140, 142, 152, 155, 156, 157, 159, 160, 162, 163, 164, 165, 168, 169, 171, 172, 174, 176, 179, 180, 182, 183, 184, 186, 196, 199, 202, 203, 204], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"ResultStorage.__init__": {"executed_lines": [34, 35, 38, 39, 41], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ResultStorage.store_result": {"executed_lines": [64, 67, 68, 69, 71, 74, 84, 87, 88, 89, 91, 93, 94], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "ResultStorage.get_result": {"executed_lines": [107, 108, 109, 112, 113, 115, 116, 117, 119], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "ResultStorage.download_result": {"executed_lines": [137, 138, 139, 140], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "ResultStorage.cleanup_expired_results": {"executed_lines": [152, 155, 156, 157, 159, 160, 162, 163, 164, 165, 168, 169, 171, 172, 174], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "ResultStorage.get_storage_stats": {"executed_lines": [179, 180, 182, 183, 184, 186], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "get_result_storage": {"executed_lines": [202, 203, 204], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 23, 24, 27, 30, 33, 43, 96, 127, 142, 176, 196, 199], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResultStorage": {"executed_lines": [34, 35, 38, 39, 41, 64, 67, 68, 69, 71, 74, 84, 87, 88, 89, 91, 93, 94, 107, 108, 109, 112, 113, 115, 116, 117, 119, 137, 138, 139, 140, 152, 155, 156, 157, 159, 160, 162, 163, 164, 165, 168, 169, 171, 172, 174, 179, 180, 182, 183, 184, 186], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 23, 24, 27, 30, 33, 43, 96, 127, 142, 176, 196, 199, 202, 203, 204], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/retry.py": {"executed_lines": [8, 9, 10, 11, 12, 14, 18, 26, 29, 37, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 90, 98, 106, 114, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 144, 146, 147, 148, 150, 153, 156, 159, 169, 170, 171, 172, 173, 174, 179, 186, 188, 189, 191, 192, 194, 196, 199, 202, 203, 204, 207, 208, 209, 213, 214, 217, 242, 244, 245, 254, 255, 256, 258, 260, 261, 262, 263, 264, 267, 268, 269, 272, 273, 276, 279, 282, 283, 289, 290, 293, 296, 297, 300, 323, 325, 326, 335, 336, 337, 339, 341, 342, 343, 344, 345, 348, 349, 350, 353, 354, 357, 360, 363, 364, 370, 371, 374, 377, 378, 381, 391, 392, 393, 394, 396, 398, 401, 411, 412, 413, 414, 416, 418], "summary": {"covered_lines": 151, "num_statements": 157, "percent_covered": 96.17834394904459, "percent_covered_display": "96", "missing_lines": 6, "excluded_lines": 2, "percent_statements_covered": 96.17834394904459, "percent_statements_covered_display": "96"}, "missing_lines": [139, 141, 143, 145, 149, 151], "excluded_lines": [382, 402], "functions": {"categorize_error": {"executed_lines": [114, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 144, 146, 147, 148, 150, 153], "summary": {"covered_lines": 29, "num_statements": 35, "percent_covered": 82.85714285714286, "percent_covered_display": "83", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 82.85714285714286, "percent_statements_covered_display": "83"}, "missing_lines": [139, 141, 143, 145, 149, 151], "excluded_lines": [], "start_line": 106}, "RetryConfig.__init__": {"executed_lines": [169, 170, 171, 172, 173, 174, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "calculate_delay": {"executed_lines": [188, 189, 191, 192, 194, 196], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "is_retryable": {"executed_lines": [202, 203, 204, 207, 208, 209, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "retry_async": {"executed_lines": [242, 244, 245, 254, 255, 256, 258, 260, 261, 262, 263, 264, 267, 268, 269, 272, 273, 276, 279, 282, 283, 289, 290, 293, 296, 297], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "retry_sync": {"executed_lines": [323, 325, 326, 335, 336, 337, 339, 341, 342, 343, 344, 345, 348, 349, 350, 353, 354, 357, 360, 363, 364, 370, 371, 374, 377, 378], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "with_retry": {"executed_lines": [391, 392, 398], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [382], "start_line": 381}, "with_retry.decorator": {"executed_lines": [393, 396], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391}, "with_retry.decorator.wrapper": {"executed_lines": [394], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393}, "with_retry_sync": {"executed_lines": [411, 412, 418], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [402], "start_line": 401}, "with_retry_sync.decorator": {"executed_lines": [413, 416], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "with_retry_sync.decorator.wrapper": {"executed_lines": [414], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 413}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 18, 26, 29, 37, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 90, 98, 106, 156, 159, 186, 199, 217, 300, 381, 401], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RetryableError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "NonRetryableError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "ParseError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "AssetError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "LogicError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "PackageError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "NetworkError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "RateLimitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TimeoutError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "RetryConfig": {"executed_lines": [169, 170, 171, 172, 173, 174, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 18, 26, 29, 37, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 90, 98, 106, 114, 115, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, 137, 138, 140, 142, 144, 146, 147, 148, 150, 153, 156, 159, 186, 188, 189, 191, 192, 194, 196, 199, 202, 203, 204, 207, 208, 209, 213, 214, 217, 242, 244, 245, 254, 255, 256, 258, 260, 261, 262, 263, 264, 267, 268, 269, 272, 273, 276, 279, 282, 283, 289, 290, 293, 296, 297, 300, 323, 325, 326, 335, 336, 337, 339, 341, 342, 343, 344, 345, 348, 349, 350, 353, 354, 357, 360, 363, 364, 370, 371, 374, 377, 378, 381, 391, 392, 393, 394, 396, 398, 401, 411, 412, 413, 414, 416, 418], "summary": {"covered_lines": 144, "num_statements": 150, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 6, "excluded_lines": 2, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [139, 141, 143, 145, 149, 151], "excluded_lines": [382, 402], "start_line": 1}}}, "src/services/security_headers.py": {"executed_lines": [1, 2, 5, 10, 11, 13, 14, 17, 18, 19, 20, 28], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"SecurityHeadersMiddleware.__init__": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "SecurityHeadersMiddleware.dispatch": {"executed_lines": [14, 17, 18, 19, 20, 28], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [1, 2, 5, 10, 13], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SecurityHeadersMiddleware": {"executed_lines": [11, 14, 17, 18, 19, 20, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 5}, "": {"executed_lines": [1, 2, 5, 10, 13], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/smart_defaults.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 157, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 157, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [14, 15, 16, 17, 19, 26, 33, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 62, 63, 64, 67, 70, 71, 72, 73, 80, 144, 200, 247, 257, 258, 259, 260, 262, 281, 283, 284, 285, 288, 289, 290, 291, 294, 295, 296, 297, 298, 301, 302, 305, 306, 307, 308, 311, 312, 313, 314, 317, 318, 319, 322, 325, 337, 343, 347, 350, 354, 356, 357, 358, 359, 360, 363, 365, 369, 370, 372, 373, 374, 377, 378, 379, 381, 382, 385, 386, 388, 394, 395, 398, 403, 404, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 420, 421, 422, 424, 427, 428, 430, 432, 436, 438, 445, 451, 456, 458, 460, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 478, 488, 491, 502, 504, 513, 516, 517, 518, 519, 520, 521, 523, 530, 533, 536, 537, 538], "excluded_lines": [], "functions": {"SmartDefaultsEngine.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [258, 259, 260], "excluded_lines": [], "start_line": 257}, "SmartDefaultsEngine.get_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [281, 283, 284, 285, 288, 289, 290, 291, 294, 295, 296, 297, 298, 301, 302, 305, 306, 307, 308, 311, 312, 313, 314, 317, 318, 319, 322, 325, 337], "excluded_lines": [], "start_line": 262}, "SmartDefaultsEngine._apply_mode_rules": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [347, 350, 354, 356, 357, 358, 359, 360, 363], "excluded_lines": [], "start_line": 343}, "SmartDefaultsEngine._apply_feature_rules": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [369, 370, 372, 373, 374, 377, 378, 379, 381, 382, 385, 386], "excluded_lines": [], "start_line": 365}, "SmartDefaultsEngine._apply_pattern_matching": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [394, 395, 398, 403, 404, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 420, 421, 422, 424, 427, 428, 430], "excluded_lines": [], "start_line": 388}, "SmartDefaultsEngine._get_user_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [436], "excluded_lines": [], "start_line": 432}, "SmartDefaultsEngine._apply_user_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [445, 451, 456], "excluded_lines": [], "start_line": 438}, "SmartDefaultsEngine._evaluate_condition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [460, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476], "excluded_lines": [], "start_line": 458}, "SmartDefaultsEngine.learn_from_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [488, 491, 502], "excluded_lines": [], "start_line": 478}, "SmartDefaultsEngine.get_pattern_suggestions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [513, 516, 517, 518, 519, 520, 521, 523], "excluded_lines": [], "start_line": 504}, "get_smart_defaults_engine": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [536, 537, 538], "excluded_lines": [], "start_line": 533}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 49, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [14, 15, 16, 17, 19, 26, 33, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 62, 63, 64, 67, 70, 71, 72, 73, 80, 144, 200, 247, 257, 262, 343, 365, 388, 432, 438, 458, 478, 504, 530, 533], "excluded_lines": [], "start_line": 1}}, "classes": {"DefaultSelectionRule": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "PatternMatch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "HistoricalConversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "SmartDefaultsResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "SmartDefaultsEngine": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 105, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 105, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [258, 259, 260, 281, 283, 284, 285, 288, 289, 290, 291, 294, 295, 296, 297, 298, 301, 302, 305, 306, 307, 308, 311, 312, 313, 314, 317, 318, 319, 322, 325, 337, 347, 350, 354, 356, 357, 358, 359, 360, 363, 369, 370, 372, 373, 374, 377, 378, 379, 381, 382, 385, 386, 394, 395, 398, 403, 404, 407, 408, 409, 410, 411, 412, 415, 416, 417, 418, 420, 421, 422, 424, 427, 428, 430, 436, 445, 451, 456, 460, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 488, 491, 502, 513, 516, 517, 518, 519, 520, 521, 523], "excluded_lines": [], "start_line": 247}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 52, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 52, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [14, 15, 16, 17, 19, 26, 33, 36, 37, 38, 39, 40, 43, 46, 47, 48, 49, 50, 51, 54, 57, 58, 59, 60, 61, 62, 63, 64, 67, 70, 71, 72, 73, 80, 144, 200, 247, 257, 262, 343, 365, 388, 432, 438, 458, 478, 504, 530, 533, 536, 537, 538], "excluded_lines": [], "start_line": 1}}}, "src/services/structured_logging.py": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 29, 44, 45, 48, 49, 51, 52, 55, 58, 66, 67, 68, 69, 71, 74, 75, 78, 87, 88, 91, 94, 95, 97, 99, 105, 108, 109, 110, 112, 117, 118, 119, 121, 124, 127, 128, 129, 130, 132, 134, 145, 146, 147, 150, 151, 152, 155, 156, 159, 160, 163, 164, 166, 167, 169, 172, 173, 176, 186, 189, 199, 202, 203, 206, 207, 209, 213, 214, 217, 218, 220, 225, 226, 227, 229, 232, 243, 244, 246, 247, 248, 249, 252, 259, 262, 266, 269, 276, 277, 280, 284, 287, 296, 297, 298, 299, 300, 302, 303, 304, 306, 307, 310, 311, 313, 315, 316, 317, 320, 339, 345, 346, 348, 349, 351, 353, 356, 373, 379, 380, 382, 384, 387, 402, 408, 409, 411, 413, 417, 423, 426, 428, 429, 430, 431, 433, 434, 435, 436, 438, 439, 440, 441, 443, 449], "summary": {"covered_lines": 158, "num_statements": 162, "percent_covered": 97.53086419753086, "percent_covered_display": "98", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 97.53086419753086, "percent_statements_covered_display": "98"}, "missing_lines": [419, 444, 445, 446], "excluded_lines": [], "functions": {"configure_structlog": {"executed_lines": [44, 45, 48, 49, 51, 52, 55, 58, 66, 67, 68, 69, 71, 74, 75, 78, 87, 88, 91, 94, 95, 97, 99, 105, 108, 109, 110, 112, 117, 118, 119, 121], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "LoggingFormatter.__init__": {"executed_lines": [128, 129, 130], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "LoggingFormatter.format": {"executed_lines": [134, 145, 146, 147, 150, 151, 152, 155, 156, 159, 160, 163, 164, 166, 167, 169, 172, 173], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "get_logger": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "get_standard_logger": {"executed_lines": [199, 202, 203, 206, 207, 209, 213, 214, 217, 218, 220, 225, 226, 227, 229], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "set_correlation_id": {"executed_lines": [243, 244, 246, 247, 248, 249], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "get_correlation_id": {"executed_lines": [259], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "clear_correlation_id": {"executed_lines": [266], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262}, "set_request_metadata": {"executed_lines": [276, 277], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "clear_request_metadata": {"executed_lines": [284], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "LogContext.__init__": {"executed_lines": [297, 298, 299, 300], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "LogContext.__enter__": {"executed_lines": [303, 304, 306, 307, 310, 311, 313], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "LogContext.__exit__": {"executed_lines": [316, 317], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "log_api_request": {"executed_lines": [339, 345, 346, 348, 349, 351, 353], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320}, "log_conversion_event": {"executed_lines": [373, 379, 380, 382, 384], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "log_error_with_context": {"executed_lines": [402, 408, 409, 411, 413], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 387}, "_get_module_logger": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [419], "excluded_lines": [], "start_line": 417}, "_LazyStructlogLogger.__getattr__": {"executed_lines": [429, 430, 431], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "_LazyStructlogLogger.__call__": {"executed_lines": [434, 435, 436], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 433}, "_LazyStructlogLogger.__repr__": {"executed_lines": [439, 440, 441], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438}, "_LazyStructlogLogger.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [444, 445, 446], "excluded_lines": [], "start_line": 443}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 29, 124, 127, 132, 176, 189, 232, 252, 262, 269, 280, 287, 296, 302, 315, 320, 356, 387, 417, 423, 426, 428, 433, 438, 443, 449], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"LoggingFormatter": {"executed_lines": [128, 129, 130, 134, 145, 146, 147, 150, 151, 152, 155, 156, 159, 160, 163, 164, 166, 167, 169, 172, 173], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "LogContext": {"executed_lines": [297, 298, 299, 300, 303, 304, 306, 307, 310, 311, 313, 316, 317], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "_LazyStructlogLogger": {"executed_lines": [429, 430, 431, 434, 435, 436, 439, 440, 441], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [444, 445, 446], "excluded_lines": [], "start_line": 423}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 29, 44, 45, 48, 49, 51, 52, 55, 58, 66, 67, 68, 69, 71, 74, 75, 78, 87, 88, 91, 94, 95, 97, 99, 105, 108, 109, 110, 112, 117, 118, 119, 121, 124, 127, 132, 176, 186, 189, 199, 202, 203, 206, 207, 209, 213, 214, 217, 218, 220, 225, 226, 227, 229, 232, 243, 244, 246, 247, 248, 249, 252, 259, 262, 266, 269, 276, 277, 280, 284, 287, 296, 302, 315, 320, 339, 345, 346, 348, 349, 351, 353, 356, 373, 379, 380, 382, 384, 387, 402, 408, 409, 411, 413, 417, 423, 426, 428, 433, 438, 443, 449], "summary": {"covered_lines": 115, "num_statements": 116, "percent_covered": 99.13793103448276, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.13793103448276, "percent_statements_covered_display": "99"}, "missing_lines": [419], "excluded_lines": [], "start_line": 1}}}, "src/services/syntax_validator.py": {"executed_lines": [11, 12, 13, 14, 16, 19, 20, 25, 26, 27, 28, 29, 30, 33, 34, 38, 39, 40, 41, 45, 123, 126, 129, 130, 131, 132, 133, 135, 145, 148, 149, 150, 157, 166, 177, 179, 181, 214, 224, 226, 229, 232, 233, 234, 235, 246, 247, 257, 258, 259, 260, 271, 281, 284, 287, 288, 290, 302, 304, 316, 317, 319, 321, 325, 328, 329, 330, 340, 350, 360, 372, 373, 374, 375, 376, 386, 387, 388, 389, 390, 395, 396, 407, 417, 420, 423, 424, 426, 427, 429, 430, 432, 440, 443, 444, 446, 448, 449, 453, 454, 456, 457, 459, 460, 461, 462, 465, 494, 524, 534, 535, 536, 537, 538], "summary": {"covered_lines": 114, "num_statements": 184, "percent_covered": 61.95652173913044, "percent_covered_display": "62", "missing_lines": 70, "excluded_lines": 0, "percent_statements_covered": 61.95652173913044, "percent_statements_covered_display": "62"}, "missing_lines": [21, 23, 24, 36, 37, 136, 151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 183, 184, 187, 188, 189, 190, 191, 192, 201, 203, 204, 212, 216, 217, 218, 219, 220, 221, 222, 236, 244, 261, 269, 272, 305, 314, 331, 339, 341, 349, 351, 359, 361, 369, 397, 408, 475, 477, 478, 479, 480, 481, 490, 491, 505, 507, 508, 509, 510, 511, 520, 521], "excluded_lines": [], "functions": {"SyntaxError.__init__": {"executed_lines": [129, 130, 131, 132, 133], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "SyntaxError.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136], "excluded_lines": [], "start_line": 135}, "JavaScriptSyntaxValidator.__init__": {"executed_lines": [149, 150, 157], "summary": {"covered_lines": 3, "num_statements": 15, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164], "excluded_lines": [], "start_line": 148}, "JavaScriptSyntaxValidator.validate": {"executed_lines": [177, 179, 181], "summary": {"covered_lines": 3, "num_statements": 15, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [183, 184, 187, 188, 189, 190, 191, 192, 201, 203, 204, 212], "excluded_lines": [], "start_line": 166}, "JavaScriptSyntaxValidator._find_error_node": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [216, 217, 218, 219, 220, 221, 222], "excluded_lines": [], "start_line": 214}, "JavaScriptSyntaxValidator._basic_syntax_check": {"executed_lines": [226, 229, 232, 233, 234, 235, 246, 247, 257, 258, 259, 260, 271, 281], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [236, 244, 261, 269, 272], "excluded_lines": [], "start_line": 224}, "JSONSchemaValidator.__init__": {"executed_lines": [288], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "JSONSchemaValidator.validate": {"executed_lines": [302, 304, 316, 317, 319], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [305, 314], "excluded_lines": [], "start_line": 290}, "JSONSchemaValidator._validate_object": {"executed_lines": [325, 328, 329, 330, 340, 350, 360, 372, 373, 374, 375, 376, 386, 387, 388, 389, 390, 395, 396, 407, 417], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 67.74193548387096, "percent_statements_covered_display": "68"}, "missing_lines": [331, 339, 341, 349, 351, 359, 361, 369, 397, 408], "excluded_lines": [], "start_line": 321}, "SyntaxAutoFix.fix_missing_semicolons": {"executed_lines": [426, 427, 429, 430, 432, 440, 443, 444, 446], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424}, "SyntaxAutoFix.fix_missing_commas": {"executed_lines": [453, 454], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449}, "SyntaxAutoFix.fix_unmatched_braces": {"executed_lines": [459, 460, 461, 462], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457}, "validate_javascript_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [475, 477, 478, 479, 480, 481, 490, 491], "excluded_lines": [], "start_line": 465}, "validate_json_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [505, 507, 508, 509, 510, 511, 520, 521], "excluded_lines": [], "start_line": 494}, "auto_fix_javascript": {"executed_lines": [534, 535, 536, 537, 538], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "": {"executed_lines": [11, 12, 13, 14, 16, 19, 20, 25, 26, 27, 28, 29, 30, 33, 34, 38, 39, 40, 41, 45, 123, 126, 135, 145, 148, 166, 214, 224, 284, 287, 290, 321, 420, 423, 424, 448, 449, 456, 457, 465, 494, 524], "summary": {"covered_lines": 42, "num_statements": 47, "percent_covered": 89.36170212765957, "percent_covered_display": "89", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 89.36170212765957, "percent_statements_covered_display": "89"}, "missing_lines": [21, 23, 24, 36, 37], "excluded_lines": [], "start_line": 1}}, "classes": {"SyntaxError": {"executed_lines": [129, 130, 131, 132, 133], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [136], "excluded_lines": [], "start_line": 123}, "JavaScriptSyntaxValidator": {"executed_lines": [149, 150, 157, 177, 179, 181, 226, 229, 232, 233, 234, 235, 246, 247, 257, 258, 259, 260, 271, 281], "summary": {"covered_lines": 20, "num_statements": 56, "percent_covered": 35.714285714285715, "percent_covered_display": "36", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "36"}, "missing_lines": [151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 183, 184, 187, 188, 189, 190, 191, 192, 201, 203, 204, 212, 216, 217, 218, 219, 220, 221, 222, 236, 244, 261, 269, 272], "excluded_lines": [], "start_line": 145}, "JSONSchemaValidator": {"executed_lines": [288, 302, 304, 316, 317, 319, 325, 328, 329, 330, 340, 350, 360, 372, 373, 374, 375, 376, 386, 387, 388, 389, 390, 395, 396, 407, 417], "summary": {"covered_lines": 27, "num_statements": 39, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [305, 314, 331, 339, 341, 349, 351, 359, 361, 369, 397, 408], "excluded_lines": [], "start_line": 284}, "SyntaxAutoFix": {"executed_lines": [426, 427, 429, 430, 432, 440, 443, 444, 446, 453, 454, 459, 460, 461, 462], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [11, 12, 13, 14, 16, 19, 20, 25, 26, 27, 28, 29, 30, 33, 34, 38, 39, 40, 41, 45, 123, 126, 135, 145, 148, 166, 214, 224, 284, 287, 290, 321, 420, 423, 424, 448, 449, 456, 457, 465, 494, 524, 534, 535, 536, 537, 538], "summary": {"covered_lines": 47, "num_statements": 68, "percent_covered": 69.11764705882354, "percent_covered_display": "69", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 69.11764705882354, "percent_statements_covered_display": "69"}, "missing_lines": [21, 23, 24, 36, 37, 475, 477, 478, 479, 480, 481, 490, 491, 505, 507, 508, 509, 510, 511, 520, 521], "excluded_lines": [], "start_line": 1}}}, "src/services/task_queue.py": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 29, 32, 35, 36, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 75, 81, 87, 88, 89, 90, 91, 94, 101, 103, 104, 106, 108, 109, 110, 112, 114, 115, 116, 118, 137, 139, 148, 155, 156, 158, 160, 162, 170, 173, 179, 182, 184, 185, 190, 192, 193, 194, 206, 207, 209, 211, 212, 214, 216, 218, 220, 221, 222, 223, 224, 225, 227, 229, 231, 243, 245, 246, 247, 249, 250, 252, 253, 255, 257, 258, 259, 262, 263, 265, 267, 268, 271, 272, 274, 276, 277, 279, 281, 283, 284, 285, 287, 288, 289, 291, 294, 295, 297, 298, 300, 302, 304, 306, 307, 308, 309, 311, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 330, 332, 334, 336, 349, 350, 351, 352, 355, 356, 357, 359, 360, 361, 362, 363, 364, 365, 367, 371, 374, 378, 379, 380, 381, 383, 387, 391, 392, 395, 397, 398, 401, 403, 404, 407, 409, 410], "summary": {"covered_lines": 184, "num_statements": 184, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"Task.to_dict": {"executed_lines": [59], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "AsyncTaskQueue.__init__": {"executed_lines": [87, 88, 89, 90, 91, 94], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "AsyncTaskQueue.connect": {"executed_lines": [103, 104], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "AsyncTaskQueue.disconnect": {"executed_lines": [108, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "AsyncTaskQueue._get_redis": {"executed_lines": [114, 115, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "AsyncTaskQueue.enqueue": {"executed_lines": [137, 139, 148, 155, 156, 158, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "AsyncTaskQueue.dequeue": {"executed_lines": [170, 173, 179, 182, 184, 185, 190, 192, 193, 194, 206, 207, 209, 211, 212, 214], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "AsyncTaskQueue.complete": {"executed_lines": [218, 220, 221, 222, 223, 224, 225, 227, 229], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "AsyncTaskQueue.fail": {"executed_lines": [243, 245, 246, 247, 249, 250, 252, 253, 255, 257, 258, 259, 262, 263, 265, 267, 268, 271, 272, 274, 276, 277], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231}, "AsyncTaskQueue.cancel": {"executed_lines": [281, 283, 284, 285, 287, 288, 289, 291, 294, 295, 297, 298, 300], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "AsyncTaskQueue.get_status": {"executed_lines": [304, 306, 307, 308, 309], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "AsyncTaskQueue.list_tasks": {"executed_lines": [315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 330], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "AsyncTaskQueue.get_queue_stats": {"executed_lines": [334, 336, 349, 350, 351, 352, 355, 356, 357, 359, 360, 361, 362, 363, 364, 365, 367], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "get_task_queue": {"executed_lines": [378, 379, 380, 381, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374}, "enqueue_task": {"executed_lines": [391, 392], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 387}, "get_task_status": {"executed_lines": [397, 398], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 395}, "cancel_task": {"executed_lines": [403, 404], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "get_queue_stats": {"executed_lines": [409, 410], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 407}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 29, 32, 35, 36, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 75, 81, 101, 106, 112, 118, 162, 216, 231, 279, 302, 311, 332, 371, 374, 387, 395, 401, 407], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TaskStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TaskPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "Task": {"executed_lines": [59], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "AsyncTaskQueue": {"executed_lines": [87, 88, 89, 90, 91, 94, 103, 104, 108, 109, 110, 114, 115, 116, 137, 139, 148, 155, 156, 158, 160, 170, 173, 179, 182, 184, 185, 190, 192, 193, 194, 206, 207, 209, 211, 212, 214, 218, 220, 221, 222, 223, 224, 225, 227, 229, 243, 245, 246, 247, 249, 250, 252, 253, 255, 257, 258, 259, 262, 263, 265, 267, 268, 271, 272, 274, 276, 277, 281, 283, 284, 285, 287, 288, 289, 291, 294, 295, 297, 298, 300, 304, 306, 307, 308, 309, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 330, 334, 336, 349, 350, 351, 352, 355, 356, 357, 359, 360, 361, 362, 363, 364, 365, 367], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 22, 25, 26, 27, 28, 29, 32, 35, 36, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 75, 81, 101, 106, 112, 118, 162, 216, 231, 279, 302, 311, 332, 371, 374, 378, 379, 380, 381, 383, 387, 391, 392, 395, 397, 398, 401, 403, 404, 407, 409, 410], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/task_queue_enhanced.py": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 42, 52, 53, 54, 55, 58, 59, 71, 72, 73, 74, 75, 77, 79, 80, 82, 84, 85, 86, 90, 91, 97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 123, 141, 142, 144, 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 186, 201, 221, 228, 229, 230, 231, 232, 233, 236, 244, 247, 250, 252, 254, 255, 257, 259, 260, 261, 263, 265, 267, 269, 294, 296, 308, 315, 316, 317, 320, 322, 324, 326, 334, 337, 343, 346, 347, 349, 350, 353, 354, 358, 360, 361, 362, 365, 366, 369, 370, 373, 375, 376, 378, 380, 382, 384, 385, 386, 387, 388, 389, 392, 393, 394, 395, 397, 400, 403, 405, 407, 426, 428, 429, 432, 433, 434, 436, 437, 440, 442, 444, 445, 447, 448, 449, 450, 453, 454, 456, 459, 462, 464, 467, 470, 471, 472, 474, 476, 477, 479, 480, 482, 483, 485, 488, 490, 492, 499, 500, 503, 505, 506, 508, 511, 512, 513, 514, 517, 518, 521, 522, 523, 525, 527, 528, 530, 532, 545, 547, 549, 550, 551, 552, 553, 555, 557, 567, 569, 570, 573, 574, 577, 580, 581, 582, 583, 584, 585, 588, 589, 590, 592, 593, 595, 597, 599, 601, 602, 603, 605, 606, 607, 609, 612, 613, 614, 616, 617, 618, 620, 622, 631, 635, 638, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 652, 654, 661, 662, 663, 665, 667, 668, 669, 672, 673, 674, 675, 676, 677, 682, 685, 688, 689, 690, 691, 694, 695, 696, 697, 700, 701, 705, 708, 711, 712, 714, 715, 722, 724, 729, 731, 732, 734, 736, 737, 739, 749, 750, 751, 753, 754, 755, 757, 759, 760, 761, 762, 763, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 783, 787, 788, 789, 790, 792, 796, 803, 804, 807, 809, 810, 813, 815, 816, 819, 821, 822, 825, 827, 828], "summary": {"covered_lines": 351, "num_statements": 370, "percent_covered": 94.86486486486487, "percent_covered_display": "95", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 94.86486486486487, "percent_statements_covered_display": "95"}, "missing_lines": [266, 355, 430, 571, 624, 626, 627, 628, 629, 650, 706, 709, 717, 718, 719, 720, 726, 727, 756], "excluded_lines": [], "functions": {"RetryPolicy.calculate_delay": {"executed_lines": [79, 80], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "RetryPolicy.should_retry": {"executed_lines": [84, 85, 86], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "Task.to_dict": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "Task.from_dict": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "QueueHealth.to_dict": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185}, "AsyncTaskQueue.__init__": {"executed_lines": [228, 229, 230, 231, 232, 233, 236, 244, 247, 250], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "AsyncTaskQueue.connect": {"executed_lines": [254, 255], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "AsyncTaskQueue.disconnect": {"executed_lines": [259, 260, 261], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "AsyncTaskQueue._get_redis": {"executed_lines": [265, 267], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [266], "excluded_lines": [], "start_line": 263}, "AsyncTaskQueue.enqueue": {"executed_lines": [294, 296, 308, 315, 316, 317, 320, 322, 324], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "AsyncTaskQueue.dequeue": {"executed_lines": [334, 337, 343, 346, 347, 349, 350, 353, 354, 358, 360, 361, 362, 365, 366, 369, 370, 373, 375, 376, 378], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95"}, "missing_lines": [355], "excluded_lines": [], "start_line": 326}, "AsyncTaskQueue.complete": {"executed_lines": [382, 384, 385, 386, 387, 388, 389, 392, 393, 394, 395, 397, 400, 403, 405], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "AsyncTaskQueue.fail": {"executed_lines": [426, 428, 429, 432, 433, 434, 436, 437, 440, 442, 444, 445, 447, 448, 449, 450, 453, 454, 456, 459, 462, 464, 467, 470, 471, 472, 474, 476, 477, 479, 480, 482, 483, 485, 488, 490], "summary": {"covered_lines": 36, "num_statements": 37, "percent_covered": 97.29729729729729, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.29729729729729, "percent_statements_covered_display": "97"}, "missing_lines": [430], "excluded_lines": [], "start_line": 407}, "AsyncTaskQueue.process_retry_queue": {"executed_lines": [499, 500, 503, 505, 506, 508, 511, 512, 513, 514, 517, 518, 521, 522, 523, 525, 527, 528, 530], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 492}, "AsyncTaskQueue.get_dead_letter_tasks": {"executed_lines": [545, 547, 549, 550, 551, 552, 553, 555], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532}, "AsyncTaskQueue.reprocess_dead_letter_task": {"executed_lines": [567, 569, 570, 573, 574, 577, 580, 581, 582, 583, 584, 585, 588, 589, 590, 592, 593, 595], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95"}, "missing_lines": [571], "excluded_lines": [], "start_line": 557}, "AsyncTaskQueue.cancel": {"executed_lines": [599, 601, 602, 603, 605, 606, 607, 609, 612, 613, 614, 616, 617, 618, 620], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 597}, "AsyncTaskQueue.get_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [624, 626, 627, 628, 629], "excluded_lines": [], "start_line": 622}, "AsyncTaskQueue.list_tasks": {"executed_lines": [635, 638, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 652], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [650], "excluded_lines": [], "start_line": 631}, "AsyncTaskQueue.get_queue_health": {"executed_lines": [661, 662, 663, 665, 667, 668, 669, 672, 673, 674, 675, 676, 677, 682, 685, 688, 689, 690, 691, 694, 695, 696, 697, 700, 701, 705, 708, 711, 712, 714, 715, 722], "summary": {"covered_lines": 32, "num_statements": 38, "percent_covered": 84.21052631578948, "percent_covered_display": "84", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 84.21052631578948, "percent_statements_covered_display": "84"}, "missing_lines": [706, 709, 717, 718, 719, 720], "excluded_lines": [], "start_line": 654}, "AsyncTaskQueue.get_queue_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [726, 727], "excluded_lines": [], "start_line": 724}, "AsyncTaskQueue._increment_metric": {"executed_lines": [731, 732], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 729}, "AsyncTaskQueue._record_processing_time": {"executed_lines": [736, 737], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 734}, "AsyncTaskQueue.cleanup_old_tasks": {"executed_lines": [749, 750, 751, 753, 754, 755, 757, 759, 760, 761, 762, 763, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [756], "excluded_lines": [], "start_line": 739}, "get_task_queue": {"executed_lines": [787, 788, 789, 790, 792], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 783}, "enqueue_task": {"executed_lines": [803, 804], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 796}, "get_task_status": {"executed_lines": [809, 810], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 807}, "cancel_task": {"executed_lines": [815, 816], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 813}, "get_queue_stats": {"executed_lines": [821, 822], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 819}, "get_queue_health": {"executed_lines": [827, 828], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 825}, "": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 42, 52, 53, 54, 55, 58, 59, 71, 72, 73, 74, 75, 77, 82, 90, 91, 97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 141, 142, 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 201, 221, 252, 257, 263, 269, 326, 380, 407, 492, 532, 557, 597, 622, 631, 654, 724, 729, 734, 739, 780, 783, 796, 807, 813, 819, 825], "summary": {"covered_lines": 99, "num_statements": 99, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TaskStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TaskPriority": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "RetryPolicy": {"executed_lines": [79, 80, 84, 85, 86], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "Task": {"executed_lines": [123, 144], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "QueueHealth": {"executed_lines": [186], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "AsyncTaskQueue": {"executed_lines": [228, 229, 230, 231, 232, 233, 236, 244, 247, 250, 254, 255, 259, 260, 261, 265, 267, 294, 296, 308, 315, 316, 317, 320, 322, 324, 334, 337, 343, 346, 347, 349, 350, 353, 354, 358, 360, 361, 362, 365, 366, 369, 370, 373, 375, 376, 378, 382, 384, 385, 386, 387, 388, 389, 392, 393, 394, 395, 397, 400, 403, 405, 426, 428, 429, 432, 433, 434, 436, 437, 440, 442, 444, 445, 447, 448, 449, 450, 453, 454, 456, 459, 462, 464, 467, 470, 471, 472, 474, 476, 477, 479, 480, 482, 483, 485, 488, 490, 499, 500, 503, 505, 506, 508, 511, 512, 513, 514, 517, 518, 521, 522, 523, 525, 527, 528, 530, 545, 547, 549, 550, 551, 552, 553, 555, 567, 569, 570, 573, 574, 577, 580, 581, 582, 583, 584, 585, 588, 589, 590, 592, 593, 595, 599, 601, 602, 603, 605, 606, 607, 609, 612, 613, 614, 616, 617, 618, 620, 635, 638, 639, 640, 642, 643, 644, 645, 646, 647, 648, 649, 652, 661, 662, 663, 665, 667, 668, 669, 672, 673, 674, 675, 676, 677, 682, 685, 688, 689, 690, 691, 694, 695, 696, 697, 700, 701, 705, 708, 711, 712, 714, 715, 722, 731, 732, 736, 737, 749, 750, 751, 753, 754, 755, 757, 759, 760, 761, 762, 763, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776], "summary": {"covered_lines": 229, "num_statements": 248, "percent_covered": 92.33870967741936, "percent_covered_display": "92", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 92.33870967741936, "percent_statements_covered_display": "92"}, "missing_lines": [266, 355, 430, 571, 624, 626, 627, 628, 629, 650, 706, 709, 717, 718, 719, 720, 726, 727, 756], "excluded_lines": [], "start_line": 201}, "": {"executed_lines": [15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 30, 33, 34, 35, 36, 37, 38, 39, 42, 52, 53, 54, 55, 58, 59, 71, 72, 73, 74, 75, 77, 82, 90, 91, 97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 122, 141, 142, 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, 201, 221, 252, 257, 263, 269, 326, 380, 407, 492, 532, 557, 597, 622, 631, 654, 724, 729, 734, 739, 780, 783, 787, 788, 789, 790, 792, 796, 803, 804, 807, 809, 810, 813, 815, 816, 819, 821, 822, 825, 827, 828], "summary": {"covered_lines": 114, "num_statements": 114, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/services/task_worker.py": {"executed_lines": [8, 9, 10, 12, 14, 17, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 36, 38, 39, 41, 42, 43, 46, 49, 52, 53, 55, 56, 57, 60, 61, 63, 65, 67, 68, 70, 72, 74, 75, 77, 80, 82, 83, 84, 85, 86, 87, 89, 91, 93, 96, 97, 98, 100, 102, 104, 105, 108, 109, 112, 113, 117, 118, 122, 124, 125, 127, 130, 132, 139, 141, 143, 146, 148, 152, 200], "summary": {"covered_lines": 76, "num_statements": 100, "percent_covered": 76.0, "percent_covered_display": "76", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 76.0, "percent_statements_covered_display": "76"}, "missing_lines": [154, 156, 162, 165, 168, 169, 172, 174, 175, 176, 179, 180, 181, 182, 183, 185, 188, 190, 192, 193, 194, 195, 197, 201], "excluded_lines": [], "functions": {"TaskWorker.__init__": {"executed_lines": [24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TaskWorker.register_handler": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TaskWorker.process_task": {"executed_lines": [38, 39, 41, 42, 43, 46, 49, 52, 53, 55, 56, 57, 60, 61], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TaskWorker.worker_loop": {"executed_lines": [65, 67, 68, 70, 72, 74, 75, 77, 80, 82, 83, 84, 85, 86, 87, 89], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TaskWorker.start": {"executed_lines": [93, 96, 97, 98, 100], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TaskWorker.stop": {"executed_lines": [104, 105, 108, 109, 112, 113, 117, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "handle_conversion_task": {"executed_lines": [124, 125, 127, 130, 132], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "handle_asset_conversion_task": {"executed_lines": [141, 143, 146, 148], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [154, 156, 162, 165, 168, 169, 172, 174, 179, 180, 181, 182, 183, 185, 188, 190, 192, 193, 194, 195, 197], "excluded_lines": [], "start_line": 152}, "main.signal_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [175, 176], "excluded_lines": [], "start_line": 174}, "": {"executed_lines": [8, 9, 10, 12, 14, 17, 23, 31, 36, 63, 91, 102, 122, 139, 152, 200], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94"}, "missing_lines": [201], "excluded_lines": [], "start_line": 1}}, "classes": {"TaskWorker": {"executed_lines": [24, 25, 26, 27, 28, 29, 33, 34, 38, 39, 41, 42, 43, 46, 49, 52, 53, 55, 56, 57, 60, 61, 65, 67, 68, 70, 72, 74, 75, 77, 80, 82, 83, 84, 85, 86, 87, 89, 93, 96, 97, 98, 100, 104, 105, 108, 109, 112, 113, 117, 118], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [8, 9, 10, 12, 14, 17, 23, 31, 36, 63, 91, 102, 122, 124, 125, 127, 130, 132, 139, 141, 143, 146, 148, 152, 200], "summary": {"covered_lines": 25, "num_statements": 49, "percent_covered": 51.02040816326531, "percent_covered_display": "51", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 51.02040816326531, "percent_statements_covered_display": "51"}, "missing_lines": [154, 156, 162, 165, 168, 169, 172, 174, 175, 176, 179, 180, 181, 182, 183, 185, 188, 190, 192, 193, 194, 195, 197, 201], "excluded_lines": [], "start_line": 1}}}, "src/services/tracing.py": {"executed_lines": [8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 37, 40, 41, 43, 46, 47, 49, 56, 59, 60, 61, 64, 66, 69, 71, 74, 76, 79, 81, 84, 86, 89, 94, 96, 104, 105, 106, 107, 111, 112, 113, 114, 118, 121, 123, 124, 129, 130, 131, 134, 147, 156, 157, 158, 160, 162, 165, 168, 171, 172, 173, 177, 184, 189, 192, 195, 199, 202, 204, 205, 212, 221, 230, 239, 255, 271, 273, 276, 278, 281, 289, 290, 291, 292, 295, 303, 304, 305, 308, 319, 329, 330, 333, 343, 346, 356, 371, 386], "summary": {"covered_lines": 111, "num_statements": 173, "percent_covered": 64.16184971098266, "percent_covered_display": "64", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 64.16184971098266, "percent_statements_covered_display": "64"}, "missing_lines": [34, 91, 108, 109, 115, 116, 128, 136, 137, 141, 142, 143, 144, 174, 175, 178, 179, 180, 181, 185, 186, 196, 207, 208, 214, 215, 216, 217, 218, 223, 224, 225, 226, 227, 232, 233, 234, 235, 236, 248, 250, 252, 274, 315, 316, 353, 363, 364, 365, 366, 367, 368, 378, 379, 380, 381, 382, 383, 390, 391, 392, 393], "excluded_lines": [], "functions": {"get_service_name": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "get_service_version": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "get_tracing_exporter": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "get_jaeger_host": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "get_jaeger_port": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "get_otlp_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [91], "excluded_lines": [], "start_line": 89}, "_create_resource": {"executed_lines": [96, 104, 105, 106, 107, 111, 112, 113, 114, 118], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [108, 109, 115, 116], "excluded_lines": [], "start_line": 94}, "_setup_jaeger_exporter": {"executed_lines": [123, 124, 129, 130, 131], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [128], "excluded_lines": [], "start_line": 121}, "_setup_otlp_exporter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 137, 141, 142, 143, 144], "excluded_lines": [], "start_line": 134}, "init_tracing": {"executed_lines": [156, 157, 158, 160, 162, 165, 168, 171, 172, 173, 177, 184, 189, 192, 195, 199, 202, 204, 205], "summary": {"covered_lines": 19, "num_statements": 30, "percent_covered": 63.333333333333336, "percent_covered_display": "63", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 63.333333333333336, "percent_statements_covered_display": "63"}, "missing_lines": [174, 175, 178, 179, 180, 181, 185, 186, 196, 207, 208], "excluded_lines": [], "start_line": 147}, "_instrument_fastapi": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [214, 215, 216, 217, 218], "excluded_lines": [], "start_line": 212}, "_instrument_httpx": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [223, 224, 225, 226, 227], "excluded_lines": [], "start_line": 221}, "_instrument_redis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [232, 233, 234, 235, 236], "excluded_lines": [], "start_line": 230}, "get_tracer": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [248, 250, 252], "excluded_lines": [], "start_line": 239}, "create_span": {"executed_lines": [271, 273, 276, 278], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [274], "excluded_lines": [], "start_line": 255}, "add_span_attributes": {"executed_lines": [289, 290, 291, 292], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281}, "record_span_exception": {"executed_lines": [303, 304, 305], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "end_span": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [315, 316], "excluded_lines": [], "start_line": 308}, "inject_trace_context": {"executed_lines": [329, 330], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "extract_trace_context": {"executed_lines": [343], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "get_current_span": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [353], "excluded_lines": [], "start_line": 346}, "get_trace_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [363, 364, 365, 366, 367, 368], "excluded_lines": [], "start_line": 356}, "get_span_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [378, 379, 380, 381, 382, 383], "excluded_lines": [], "start_line": 371}, "shutdown_tracing": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [390, 391, 392, 393], "excluded_lines": [], "start_line": 386}, "": {"executed_lines": [8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 37, 40, 41, 43, 46, 47, 49, 56, 59, 60, 61, 64, 69, 74, 79, 84, 89, 94, 121, 134, 147, 212, 221, 230, 239, 255, 281, 295, 308, 319, 333, 346, 356, 371, 386], "summary": {"covered_lines": 58, "num_statements": 59, "percent_covered": 98.30508474576271, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.30508474576271, "percent_statements_covered_display": "98"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 37, 40, 41, 43, 46, 47, 49, 56, 59, 60, 61, 64, 66, 69, 71, 74, 76, 79, 81, 84, 86, 89, 94, 96, 104, 105, 106, 107, 111, 112, 113, 114, 118, 121, 123, 124, 129, 130, 131, 134, 147, 156, 157, 158, 160, 162, 165, 168, 171, 172, 173, 177, 184, 189, 192, 195, 199, 202, 204, 205, 212, 221, 230, 239, 255, 271, 273, 276, 278, 281, 289, 290, 291, 292, 295, 303, 304, 305, 308, 319, 329, 330, 333, 343, 346, 356, 371, 386], "summary": {"covered_lines": 111, "num_statements": 173, "percent_covered": 64.16184971098266, "percent_covered_display": "64", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 64.16184971098266, "percent_statements_covered_display": "64"}, "missing_lines": [34, 91, 108, 109, 115, 116, 128, 136, 137, 141, 142, 143, 144, 174, 175, 178, 179, 180, 181, 185, 186, 196, 207, 208, 214, 215, 216, 217, 218, 223, 224, 225, 226, 227, 232, 233, 234, 235, 236, 248, 250, 252, 274, 315, 316, 353, 363, 364, 365, 366, 367, 368, 378, 379, 380, 381, 382, 383, 390, 391, 392, 393], "excluded_lines": [], "start_line": 1}}}, "src/services/user_preferences.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 137, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 137, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 17, 24, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 42, 44, 45, 46, 47, 48, 51, 54, 55, 56, 57, 58, 59, 60, 67, 75, 76, 77, 78, 80, 82, 83, 85, 87, 88, 89, 90, 92, 94, 95, 96, 98, 101, 102, 104, 110, 111, 112, 114, 121, 122, 123, 125, 126, 128, 135, 145, 146, 148, 150, 152, 154, 156, 171, 173, 175, 178, 179, 180, 182, 183, 185, 187, 203, 211, 214, 216, 217, 219, 220, 221, 224, 225, 227, 228, 230, 235, 242, 243, 245, 248, 249, 251, 252, 254, 255, 256, 257, 259, 261, 276, 278, 279, 282, 283, 286, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 300, 302, 308, 310, 312, 314, 315, 321, 333, 336, 339, 340, 341], "excluded_lines": [], "functions": {"UserPreferenceProfile.success_rate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48], "excluded_lines": [], "start_line": 45}, "InMemoryPreferenceStore.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76, 77, 78], "excluded_lines": [], "start_line": 75}, "InMemoryPreferenceStore.get_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 83], "excluded_lines": [], "start_line": 80}, "InMemoryPreferenceStore.save_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [87, 88, 89, 90], "excluded_lines": [], "start_line": 85}, "InMemoryPreferenceStore.add_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [94, 95, 96, 98, 101, 102], "excluded_lines": [], "start_line": 92}, "InMemoryPreferenceStore.get_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [110, 111, 112], "excluded_lines": [], "start_line": 104}, "InMemoryPreferenceStore.get_successful_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [121, 122, 123, 125, 126, 128], "excluded_lines": [], "start_line": 114}, "UserPreferencesService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [146], "excluded_lines": [], "start_line": 145}, "UserPreferencesService.get_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150], "excluded_lines": [], "start_line": 148}, "UserPreferencesService.save_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [154], "excluded_lines": [], "start_line": 152}, "UserPreferencesService.update_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [171, 173, 175, 178, 179, 180, 182, 183, 185], "excluded_lines": [], "start_line": 156}, "UserPreferencesService.learn_from_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [203, 211, 214, 216, 217, 219, 220, 221, 224, 225, 227, 228, 230], "excluded_lines": [], "start_line": 187}, "UserPreferencesService._learn_mode_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [242, 243, 245, 248, 249, 251, 252, 254, 255, 256, 257, 259], "excluded_lines": [], "start_line": 235}, "UserPreferencesService.get_personalized_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [276, 278, 279, 282, 283, 286, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 300], "excluded_lines": [], "start_line": 261}, "UserPreferencesService.get_conversion_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [308], "excluded_lines": [], "start_line": 302}, "UserPreferencesService.get_user_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [312, 314, 315, 321], "excluded_lines": [], "start_line": 310}, "get_user_preferences_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [339, 340, 341], "excluded_lines": [], "start_line": 336}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 17, 24, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 42, 44, 45, 51, 54, 55, 56, 57, 58, 59, 60, 67, 75, 80, 85, 92, 104, 114, 135, 145, 148, 152, 156, 187, 235, 261, 302, 310, 333, 336], "excluded_lines": [], "start_line": 1}}, "classes": {"UserPreferenceProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48], "excluded_lines": [], "start_line": 24}, "ConversionHistoryEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "InMemoryPreferenceStore": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76, 77, 78, 82, 83, 87, 88, 89, 90, 94, 95, 96, 98, 101, 102, 110, 111, 112, 121, 122, 123, 125, 126, 128], "excluded_lines": [], "start_line": 67}, "UserPreferencesService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 59, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 59, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [146, 150, 154, 171, 173, 175, 178, 179, 180, 182, 183, 185, 203, 211, 214, 216, 217, 219, 220, 221, 224, 225, 227, 228, 230, 242, 243, 245, 248, 249, 251, 252, 254, 255, 256, 257, 259, 276, 278, 279, 282, 283, 286, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 300, 308, 312, 314, 315, 321], "excluded_lines": [], "start_line": 135}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 51, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 11, 12, 13, 14, 17, 24, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 42, 44, 45, 51, 54, 55, 56, 57, 58, 59, 60, 67, 75, 80, 85, 92, 104, 114, 135, 145, 148, 152, 156, 187, 235, 261, 302, 310, 333, 336, 339, 340, 341], "excluded_lines": [], "start_line": 1}}}, "src/setup.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 3], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 3], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 3], "excluded_lines": [], "start_line": 1}}}, "src/tests/conftest.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 10, 11, 14, 15, 16, 17, 19, 26, 30, 31, 32, 33, 35, 37, 42, 46, 47, 48, 53, 54, 56, 58, 59, 61, 62, 64, 65, 67, 68, 74, 76, 77, 80, 84, 91, 96, 111, 113, 118, 121, 124, 125, 127, 129, 130, 131, 132, 134, 136, 139, 142, 143, 144, 145, 146, 147, 149, 155, 156, 166, 169, 170, 172, 173, 174, 175, 177, 180, 181, 184, 186, 187, 192, 197, 207, 210, 211, 214, 217, 218, 220, 222, 223, 225, 228, 229, 231, 232, 235, 248, 249, 250, 251, 253, 256, 257, 258, 259], "summary": {"covered_lines": 105, "num_statements": 133, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79"}, "missing_lines": [27, 38, 69, 70, 85, 86, 87, 88, 97, 137, 138, 150, 151, 152, 159, 160, 161, 162, 163, 198, 199, 200, 201, 202, 203, 205, 260, 261], "excluded_lines": [], "functions": {"_mock_get_secret": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "pytest_configure": {"executed_lines": [31, 32, 33, 35, 37, 42, 46, 47, 48, 53, 54, 56, 58, 61, 62, 64, 65, 67, 68], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.47619047619048, "percent_statements_covered_display": "90"}, "missing_lines": [69, 70], "excluded_lines": [], "start_line": 30}, "pytest_configure._mock_get_secret": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38], "excluded_lines": [], "start_line": 37}, "pytest_configure.patched": {"executed_lines": [59], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "_set_sqlite_pragma": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85, 86, 87, 88], "excluded_lines": [], "start_line": 84}, "pytest_sessionstart": {"executed_lines": [124, 125, 127, 129, 142, 143, 144, 145, 146, 147, 149], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [150, 151, 152], "excluded_lines": [], "start_line": 121}, "pytest_sessionstart.init_test_db": {"executed_lines": [130, 131, 132, 134, 136, 139], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [137, 138], "excluded_lines": [], "start_line": 129}, "project_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [159, 160, 161, 162, 163], "excluded_lines": [], "start_line": 156}, "db_session": {"executed_lines": [172, 173, 174, 175, 177], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "client": {"executed_lines": [184, 186, 187, 192, 197, 207, 210, 211, 214], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "client.override_get_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [198, 199, 200, 201, 202, 203, 205], "excluded_lines": [], "start_line": 197}, "reset_rate_limiter": {"executed_lines": [220, 222, 223, 225], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "reset_performance_mocks": {"executed_lines": [231, 232, 235, 248, 249, 250, 251, 253, 256, 257, 258, 259], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [260, 261], "excluded_lines": [], "start_line": 229}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 10, 11, 14, 15, 16, 17, 19, 26, 30, 74, 76, 77, 80, 84, 91, 96, 111, 113, 118, 121, 155, 156, 166, 169, 170, 180, 181, 217, 218, 228, 229], "summary": {"covered_lines": 38, "num_statements": 39, "percent_covered": 97.43589743589743, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.43589743589743, "percent_statements_covered_display": "97"}, "missing_lines": [97], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 10, 11, 14, 15, 16, 17, 19, 26, 30, 31, 32, 33, 35, 37, 42, 46, 47, 48, 53, 54, 56, 58, 59, 61, 62, 64, 65, 67, 68, 74, 76, 77, 80, 84, 91, 96, 111, 113, 118, 121, 124, 125, 127, 129, 130, 131, 132, 134, 136, 139, 142, 143, 144, 145, 146, 147, 149, 155, 156, 166, 169, 170, 172, 173, 174, 175, 177, 180, 181, 184, 186, 187, 192, 197, 207, 210, 211, 214, 217, 218, 220, 222, 223, 225, 228, 229, 231, 232, 235, 248, 249, 250, 251, 253, 256, 257, 258, 259], "summary": {"covered_lines": 105, "num_statements": 133, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79"}, "missing_lines": [27, 38, 69, 70, 85, 86, 87, 88, 97, 137, 138, 150, 151, 152, 159, 160, 161, 162, 163, 198, 199, 200, 201, 202, 203, 205, 260, 261], "excluded_lines": [], "start_line": 1}}}, "src/tests/test_analyzer.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 19, 20, 22, 24, 25, 27, 28, 30, 36, 39, 45, 47, 50, 52, 53, 55, 56, 58, 63, 66, 80, 85, 90, 92, 94, 95, 97, 98, 100, 105, 106, 108, 110, 112, 113, 115, 116, 118, 125, 128, 132, 134, 136, 138, 140, 142, 143, 144, 148, 150, 152, 154, 155, 156, 160, 162, 164, 166, 167, 168, 169, 171, 175, 177, 178, 179, 184, 186, 187, 189, 200, 203, 207, 209, 210, 212, 213, 214, 218, 220, 222, 224, 231, 232, 234, 236, 242, 243, 245, 247, 248, 249, 250, 252, 253, 254, 255, 256, 258, 260, 262, 269, 271, 273, 275, 283, 284, 285, 289, 291, 292, 293, 295, 296, 297, 298, 299, 301, 303, 305, 306, 307, 309, 312, 319, 332, 337], "summary": {"covered_lines": 135, "num_statements": 141, "percent_covered": 95.74468085106383, "percent_covered_display": "96", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 95.74468085106383, "percent_statements_covered_display": "96"}, "missing_lines": [320, 322, 325, 326, 330, 338], "excluded_lines": [], "functions": {"TestJavaAnalyzerMVP.analyzer": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestJavaAnalyzerMVP.simple_jar_with_texture": {"executed_lines": [27, 28, 30, 36, 39, 45, 47, 50], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestJavaAnalyzerMVP.jar_with_java_source": {"executed_lines": [55, 56, 58, 63, 66, 80, 85, 90, 92], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestJavaAnalyzerMVP.jar_without_texture": {"executed_lines": [97, 98, 100, 105, 106, 108, 110], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "TestJavaAnalyzerMVP.jar_with_forge_metadata": {"executed_lines": [115, 116, 118, 125, 128, 132, 134, 136], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestJavaAnalyzerMVP.test_analyze_jar_for_mvp_success": {"executed_lines": [140, 142, 143, 144, 148], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestJavaAnalyzerMVP.test_analyze_jar_with_java_source": {"executed_lines": [152, 154, 155, 156, 160], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestJavaAnalyzerMVP.test_analyze_jar_for_mvp_missing_texture": {"executed_lines": [164, 166, 167, 168, 169], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "TestJavaAnalyzerMVP.test_analyze_jar_for_mvp_forge_metadata": {"executed_lines": [175, 177, 178, 179], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "TestJavaAnalyzerMVP.test_analyze_jar_with_mods_toml": {"executed_lines": [186, 187, 189, 200, 203, 207, 209, 210, 212, 213, 214, 218, 220], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 184}, "TestJavaAnalyzerMVP.test_find_block_texture": {"executed_lines": [224, 231, 232], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "TestJavaAnalyzerMVP.test_find_block_texture_none_found": {"executed_lines": [236, 242, 243], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "TestJavaAnalyzerMVP.test_extract_mod_id_from_metadata_fabric": {"executed_lines": [247, 248, 249, 250, 252, 253, 254, 255, 256, 258], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestJavaAnalyzerMVP.test_find_block_class_name": {"executed_lines": [262, 269, 271], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestJavaAnalyzerMVP.test_class_name_to_registry_name": {"executed_lines": [275, 283, 284, 285], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273}, "TestJavaAnalyzerMVP.test_invalid_jar_file": {"executed_lines": [291, 292, 293, 295, 296, 297, 298, 299, 301], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289}, "TestJavaAnalyzerMVP.test_nonexistent_file": {"executed_lines": [305, 306, 307], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "TestJavaAnalyzerMVP.test_fixture_jar_file": {"executed_lines": [312, 319, 332], "summary": {"covered_lines": 3, "num_statements": 8, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 37.5, "percent_statements_covered_display": "38"}, "missing_lines": [320, 322, 325, 326, 330], "excluded_lines": [], "start_line": 309}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 19, 20, 24, 25, 52, 53, 94, 95, 112, 113, 138, 150, 162, 171, 184, 222, 234, 245, 260, 273, 289, 303, 309, 337], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97"}, "missing_lines": [338], "excluded_lines": [], "start_line": 1}}, "classes": {"TestJavaAnalyzerMVP": {"executed_lines": [22, 27, 28, 30, 36, 39, 45, 47, 50, 55, 56, 58, 63, 66, 80, 85, 90, 92, 97, 98, 100, 105, 106, 108, 110, 115, 116, 118, 125, 128, 132, 134, 136, 140, 142, 143, 144, 148, 152, 154, 155, 156, 160, 164, 166, 167, 168, 169, 175, 177, 178, 179, 186, 187, 189, 200, 203, 207, 209, 210, 212, 213, 214, 218, 220, 224, 231, 232, 236, 242, 243, 247, 248, 249, 250, 252, 253, 254, 255, 256, 258, 262, 269, 271, 275, 283, 284, 285, 291, 292, 293, 295, 296, 297, 298, 299, 301, 305, 306, 307, 312, 319, 332], "summary": {"covered_lines": 103, "num_statements": 108, "percent_covered": 95.37037037037037, "percent_covered_display": "95", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 95.37037037037037, "percent_statements_covered_display": "95"}, "missing_lines": [320, 322, 325, 326, 330], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 16, 19, 20, 24, 25, 52, 53, 94, 95, 112, 113, 138, 150, 162, 171, 184, 222, 234, 245, 260, 273, 289, 303, 309, 337], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97"}, "missing_lines": [338], "excluded_lines": [], "start_line": 1}}}, "src/tests/test_comparison_api.py": {"executed_lines": [1, 2, 3, 6, 8, 11, 19, 20, 23, 30, 33, 34, 35, 38, 40, 42, 48, 50, 51, 54, 56, 58, 63, 65, 68, 70, 72, 74, 75], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"test_comparison_api_endpoints_exist": {"executed_lines": [8, 11, 19, 20, 23, 30, 33, 34, 35], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "test_create_comparison_invalid_conversion_id": {"executed_lines": [40, 42, 48, 50, 51], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "test_create_comparison_missing_fields": {"executed_lines": [56, 58, 63, 65], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "test_get_comparison_invalid_id": {"executed_lines": [70, 72, 74, 75], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "": {"executed_lines": [1, 2, 3, 6, 38, 54, 68], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 6, 8, 11, 19, 20, 23, 30, 33, 34, 35, 38, 40, 42, 48, 50, 51, 54, 56, 58, 63, 65, 68, 70, 72, 74, 75], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/test_main_entry.py": {"executed_lines": [8, 9, 10, 11, 14, 15, 18, 28, 31, 33, 35, 37, 38, 39, 40, 43, 46, 48, 51, 54, 56, 57, 60, 63, 65, 68, 71, 73, 74, 76, 78, 79, 82], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.05882352941177, "percent_statements_covered_display": "97"}, "missing_lines": [83], "excluded_lines": [], "functions": {"TestAppConfiguration.test_app_exists": {"executed_lines": [33], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestAppConfiguration.test_constants_defined": {"executed_lines": [37, 38, 39, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestDatabaseConfiguration.test_conversion_jobs_db_exists": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestMiddleware.test_app_has_routes": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestLifespan.test_lifespan_context_manager": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestRoutes.test_health_routes_exist": {"executed_lines": [73, 74], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestRoutes.test_conversion_routes_exist": {"executed_lines": [78, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "": {"executed_lines": [8, 9, 10, 11, 14, 15, 18, 28, 31, 35, 43, 46, 51, 54, 60, 63, 68, 71, 76, 82], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [83], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAppConfiguration": {"executed_lines": [33, 37, 38, 39, 40], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestDatabaseConfiguration": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestMiddleware": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestLifespan": {"executed_lines": [65], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestRoutes": {"executed_lines": [73, 74, 78, 79], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "": {"executed_lines": [8, 9, 10, 11, 14, 15, 18, 28, 31, 35, 43, 46, 51, 54, 60, 63, 68, 71, 76, 82], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [83], "excluded_lines": [], "start_line": 1}}}, "src/tests/test_websocket_integration.py": {"executed_lines": [15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 32, 33, 41, 42, 47, 48, 56, 57, 59, 62, 63, 64, 66, 69, 72, 73, 74, 75, 78, 81, 82, 84, 87, 88, 89, 90, 91, 92, 94, 97, 98, 101, 102, 105, 106, 109, 110, 113, 114, 116, 118, 119, 120, 122, 125, 126, 129, 132, 133, 136, 137, 139, 141, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 160, 161, 164, 165, 167, 171, 172, 174, 176, 183, 184, 185, 186, 187, 188, 191, 192, 195, 196, 198, 199, 202, 203, 204, 206, 208, 211, 216, 217, 218, 219, 220, 223, 227, 228, 229, 232, 234, 235, 236, 237, 240, 243, 244, 246, 247, 249, 250, 251, 253, 254, 256, 258, 263, 265, 266, 267, 268, 269, 270, 272, 275, 276, 278, 279, 281, 282, 283, 285, 286, 288, 290, 292, 293, 294, 295, 296, 298, 302, 303, 304, 326, 327, 328, 350, 351, 352, 361, 362, 363, 376, 377, 378, 388, 389, 390, 399, 400, 401, 411, 412, 413, 457, 458, 460, 462, 471, 472, 474, 475, 476, 479, 480, 481], "summary": {"covered_lines": 188, "num_statements": 250, "percent_covered": 75.2, "percent_covered_display": "75", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 75.2, "percent_statements_covered_display": "75"}, "missing_lines": [35, 38, 44, 50, 51, 52, 307, 308, 310, 311, 319, 320, 321, 322, 323, 331, 333, 334, 335, 337, 338, 339, 344, 345, 347, 356, 358, 365, 367, 368, 369, 370, 371, 372, 373, 380, 382, 383, 384, 385, 393, 396, 403, 407, 415, 416, 419, 420, 421, 422, 426, 429, 431, 437, 438, 441, 444, 447, 448, 450, 451, 454], "excluded_lines": [], "functions": {"async_client": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [35, 38], "excluded_lines": [], "start_line": 33}, "test_file_path": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [44], "excluded_lines": [], "start_line": 42}, "mock_upload_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [50, 51, 52], "excluded_lines": [], "start_line": 48}, "test_websocket_connection": {"executed_lines": [59, 62, 63, 64, 66, 69, 72, 73, 74, 75, 78], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "test_websocket_broadcast": {"executed_lines": [84, 87, 88, 89, 90, 91, 92, 94, 97, 98, 101, 102, 105, 106, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "test_websocket_disconnect_cleanup": {"executed_lines": [116, 118, 119, 120, 122, 125, 126, 129, 132, 133], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "test_multiple_clients_same_conversion": {"executed_lines": [139, 141, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 160, 161, 164, 165, 167], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "test_progress_message_creation": {"executed_lines": [174, 176, 183, 184, 185, 186, 187, 188, 191, 192], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "test_progress_handler_broadcast": {"executed_lines": [198, 199, 202, 203, 204, 206, 208, 211, 216, 217, 218, 219, 220, 223, 227, 228, 229, 232, 234, 235, 236, 237, 240], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "test_conversion_complete_broadcast": {"executed_lines": [246, 247, 249, 250, 251, 253, 254, 256, 258, 263, 265, 266, 267, 268, 269, 270, 272], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "test_conversion_failed_broadcast": {"executed_lines": [278, 279, 281, 282, 283, 285, 286, 288, 290, 292, 293, 294, 295, 296, 298], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "test_create_conversion_with_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [307, 308, 310, 311, 319, 320, 321, 322, 323], "excluded_lines": [], "start_line": 304}, "test_create_conversion_invalid_file_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [331, 333, 334, 335, 337, 338, 339, 344, 345, 347], "excluded_lines": [], "start_line": 328}, "test_get_conversion_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [356, 358], "excluded_lines": [], "start_line": 352}, "test_list_conversions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [365, 367, 368, 369, 370, 371, 372, 373], "excluded_lines": [], "start_line": 363}, "test_list_conversions_pagination": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [380, 382, 383, 384, 385], "excluded_lines": [], "start_line": 378}, "test_delete_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [393, 396], "excluded_lines": [], "start_line": 390}, "test_download_conversion_not_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [403, 407], "excluded_lines": [], "start_line": 401}, "test_websocket_with_conversion_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [415, 416, 419, 420, 421, 422, 426, 429, 431, 437, 438, 441, 444, 447, 448, 450, 451, 454], "excluded_lines": [], "start_line": 413}, "test_progress_message_serialization": {"executed_lines": [460, 462, 471, 472, 474, 475, 476, 479, 480, 481], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 458}, "": {"executed_lines": [15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 32, 33, 41, 42, 47, 48, 56, 57, 81, 82, 113, 114, 136, 137, 171, 172, 195, 196, 243, 244, 275, 276, 302, 303, 304, 326, 327, 328, 350, 351, 352, 361, 362, 363, 376, 377, 378, 388, 389, 390, 399, 400, 401, 411, 412, 413, 457, 458], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 32, 33, 41, 42, 47, 48, 56, 57, 59, 62, 63, 64, 66, 69, 72, 73, 74, 75, 78, 81, 82, 84, 87, 88, 89, 90, 91, 92, 94, 97, 98, 101, 102, 105, 106, 109, 110, 113, 114, 116, 118, 119, 120, 122, 125, 126, 129, 132, 133, 136, 137, 139, 141, 142, 145, 146, 147, 148, 149, 150, 153, 156, 157, 160, 161, 164, 165, 167, 171, 172, 174, 176, 183, 184, 185, 186, 187, 188, 191, 192, 195, 196, 198, 199, 202, 203, 204, 206, 208, 211, 216, 217, 218, 219, 220, 223, 227, 228, 229, 232, 234, 235, 236, 237, 240, 243, 244, 246, 247, 249, 250, 251, 253, 254, 256, 258, 263, 265, 266, 267, 268, 269, 270, 272, 275, 276, 278, 279, 281, 282, 283, 285, 286, 288, 290, 292, 293, 294, 295, 296, 298, 302, 303, 304, 326, 327, 328, 350, 351, 352, 361, 362, 363, 376, 377, 378, 388, 389, 390, 399, 400, 401, 411, 412, 413, 457, 458, 460, 462, 471, 472, 474, 475, 476, 479, 480, 481], "summary": {"covered_lines": 188, "num_statements": 250, "percent_covered": 75.2, "percent_covered_display": "75", "missing_lines": 62, "excluded_lines": 0, "percent_statements_covered": 75.2, "percent_statements_covered_display": "75"}, "missing_lines": [35, 38, 44, 50, 51, 52, 307, 308, 310, 311, 319, 320, 321, 322, 323, 331, 333, 334, 335, 337, 338, 339, 344, 345, 347, 356, 358, 365, 367, 368, 369, 370, 371, 372, 373, 380, 382, 383, 384, 385, 393, 396, 403, 407, 415, 416, 419, 420, 421, 422, 426, 429, 431, 437, 438, 441, 444, 447, 448, 450, 451, 454], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_addon_exporter_coverage_simple.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 16, 19, 21, 23, 24, 26, 28, 30, 31, 32, 34, 36, 38, 39, 40, 41, 43, 45, 47, 48, 50, 52, 54, 55, 57, 59, 61, 62, 65, 68, 70, 71, 73, 74, 75, 77, 79, 80, 81, 82, 84, 86, 87, 89, 90, 91, 93, 95, 97, 99, 100, 102, 103, 104, 106, 108, 111, 114, 116, 117, 119, 120, 121, 123, 125, 126, 127, 130, 133, 135, 136, 138, 139, 140, 141, 143, 145, 146, 148, 150, 151, 153, 154, 155, 156, 158, 160, 161, 163, 165, 166, 168, 169, 170, 171, 173, 175, 177, 179, 180, 182, 183, 185, 186, 187, 188, 190, 192, 195, 198, 200, 201, 203, 204, 205, 207, 209, 210, 212, 214, 215, 217, 218, 219, 221, 223, 225, 227, 228, 230, 231, 232, 234, 236, 238, 240, 241, 243, 244, 245, 247, 249, 252, 255, 257, 258, 260, 262, 263, 264, 266, 268, 269, 271, 272, 273, 274, 276, 278, 280, 282, 283, 285, 286, 287, 288, 290, 292, 294, 296, 297, 299, 300, 301, 302, 304, 306, 309, 312, 314, 315, 317, 318, 323, 325, 327, 329, 330, 332, 333, 335, 337, 340, 343, 345, 346, 348, 350, 352, 354, 355, 357, 358, 359, 360, 362, 364, 365, 367, 369, 370, 372, 373, 374, 375, 377, 379, 382, 385, 386, 387, 388, 389, 393, 394, 395, 396, 397, 398, 402, 403, 404, 405, 406, 410, 411, 412, 413, 414, 418, 419, 420, 421, 423, 424, 426, 428, 429, 430, 431, 433, 434, 435, 436, 437, 438, 439, 441, 443, 444, 445, 447, 449, 451, 452, 453, 454, 456, 457, 459, 461, 462, 463, 464, 465, 466, 467, 469, 471, 472, 473, 475, 477, 479, 480, 481, 482, 484, 485, 487, 489, 490, 493, 495, 496, 497, 498, 499, 500, 501, 503, 505, 506, 507, 509, 511], "summary": {"covered_lines": 314, "num_statements": 318, "percent_covered": 98.74213836477988, "percent_covered_display": "99", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 98.74213836477988, "percent_statements_covered_display": "99"}, "missing_lines": [391, 400, 408, 416], "excluded_lines": [], "functions": {"TestSanitizeFilename.test_sanitize_basic": {"executed_lines": [21, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestSanitizeFilename.test_sanitize_with_path": {"executed_lines": [28, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestSanitizeFilename.test_sanitize_with_dangerous_chars": {"executed_lines": [36, 38, 39, 40, 41], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestSanitizeFilename.test_sanitize_empty_string": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestSanitizeFilename.test_sanitize_only_special_chars": {"executed_lines": [52, 54, 55], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestSanitizeFilename.test_sanitize_with_underscores_hyphens": {"executed_lines": [59, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestGenerateBPManifest.test_generate_bp_manifest_basic": {"executed_lines": [70, 71, 73, 74, 75, 77, 79, 80, 81, 82], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestGenerateBPManifest.test_generate_bp_manifest_with_description": {"executed_lines": [86, 87, 89, 90, 91, 93, 95], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestGenerateBPManifest.test_generate_bp_manifest_no_description": {"executed_lines": [99, 100, 102, 103, 104, 106, 108], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestGenerateRPManifest.test_generate_rp_manifest_basic": {"executed_lines": [116, 117, 119, 120, 121, 123, 125, 126, 127], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestGenerateBlockBehaviorJson.test_generate_block_behavior_basic": {"executed_lines": [135, 136, 138, 139, 140, 141, 143, 145, 146], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestGenerateBlockBehaviorJson.test_generate_block_with_luminance": {"executed_lines": [150, 151, 153, 154, 155, 156, 158, 160, 161], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestGenerateBlockBehaviorJson.test_generate_block_with_friction": {"executed_lines": [165, 166, 168, 169, 170, 171, 173, 175], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "TestGenerateBlockBehaviorJson.test_generate_block_with_behavior_data": {"executed_lines": [179, 180, 182, 183, 185, 186, 187, 188, 190, 192], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestGenerateRPBlockDefinitionsJson.test_generate_rp_blocks_basic": {"executed_lines": [200, 201, 203, 204, 205, 207, 209, 210], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "TestGenerateRPBlockDefinitionsJson.test_generate_rp_blocks_with_texture_name": {"executed_lines": [214, 215, 217, 218, 219, 221, 223], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestGenerateRPBlockDefinitionsJson.test_generate_rp_blocks_with_texture_dict": {"executed_lines": [227, 228, 230, 231, 232, 234, 236], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "TestGenerateRPBlockDefinitionsJson.test_generate_rp_blocks_with_rp_sound": {"executed_lines": [240, 241, 243, 244, 245, 247, 249], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestGenerateTerrainTextureJson.test_generate_terrain_texture_empty": {"executed_lines": [257, 258, 260, 262, 263, 264], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestGenerateTerrainTextureJson.test_generate_terrain_texture_block": {"executed_lines": [268, 269, 271, 272, 273, 274, 276, 278], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestGenerateTerrainTextureJson.test_generate_terrain_texture_item": {"executed_lines": [282, 283, 285, 286, 287, 288, 290, 292], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestGenerateTerrainTextureJson.test_generate_terrain_texture_no_filename": {"executed_lines": [296, 297, 299, 300, 301, 302, 304, 306], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 294}, "TestGenerateRecipeJson.test_generate_recipe_basic": {"executed_lines": [314, 315, 317, 318, 323, 325], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "TestGenerateRecipeJson.test_generate_recipe_invalid_data": {"executed_lines": [329, 330, 332, 333, 335, 337], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "TestGenerateSoundsJson.test_generate_sounds_empty": {"executed_lines": [345, 346, 348, 350], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 343}, "TestGenerateSoundsJson.test_generate_sounds_basic": {"executed_lines": [354, 355, 357, 358, 359, 360, 362, 364, 365], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "TestGenerateSoundsJson.test_generate_sounds_no_filename": {"executed_lines": [369, 370, 372, 373, 374, 375, 377, 379], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestCreateMcaddonZip.test_create_mcaddon_zip_basic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [391], "excluded_lines": [], "start_line": 389}, "TestCreateMcaddonZip.test_create_mcaddon_zip_with_blocks": {"executed_lines": [423, 424, 426, 428, 429, 430, 431, 433, 434, 435, 436, 437, 438, 439, 441, 443, 444, 445, 447, 449], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 421}, "TestCreateMcaddonZip.test_create_mcaddon_zip_special_chars_in_name": {"executed_lines": [456, 457, 459, 461, 462, 463, 464, 465, 466, 467, 469, 471, 472, 473, 475, 477], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 454}, "TestCreateMcaddonZip.test_create_mcaddon_zip_with_recipes": {"executed_lines": [484, 485, 487, 489, 490, 493, 495, 496, 497, 498, 499, 500, 501, 503, 505, 506, 507, 509, 511], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 16, 19, 26, 34, 43, 50, 57, 65, 68, 84, 97, 111, 114, 130, 133, 148, 163, 177, 195, 198, 212, 225, 238, 252, 255, 266, 280, 294, 309, 312, 327, 340, 343, 352, 367, 382, 385, 386, 387, 388, 389, 393, 394, 395, 396, 397, 398, 402, 403, 404, 405, 406, 410, 411, 412, 413, 414, 418, 419, 420, 421, 451, 452, 453, 454, 479, 480, 481, 482], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSanitizeFilename": {"executed_lines": [21, 23, 24, 28, 30, 31, 32, 36, 38, 39, 40, 41, 45, 47, 48, 52, 54, 55, 59, 61, 62], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestGenerateBPManifest": {"executed_lines": [70, 71, 73, 74, 75, 77, 79, 80, 81, 82, 86, 87, 89, 90, 91, 93, 95, 99, 100, 102, 103, 104, 106, 108], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestGenerateRPManifest": {"executed_lines": [116, 117, 119, 120, 121, 123, 125, 126, 127], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111}, "TestGenerateBlockBehaviorJson": {"executed_lines": [135, 136, 138, 139, 140, 141, 143, 145, 146, 150, 151, 153, 154, 155, 156, 158, 160, 161, 165, 166, 168, 169, 170, 171, 173, 175, 179, 180, 182, 183, 185, 186, 187, 188, 190, 192], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestGenerateRPBlockDefinitionsJson": {"executed_lines": [200, 201, 203, 204, 205, 207, 209, 210, 214, 215, 217, 218, 219, 221, 223, 227, 228, 230, 231, 232, 234, 236, 240, 241, 243, 244, 245, 247, 249], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestGenerateTerrainTextureJson": {"executed_lines": [257, 258, 260, 262, 263, 264, 268, 269, 271, 272, 273, 274, 276, 278, 282, 283, 285, 286, 287, 288, 290, 292, 296, 297, 299, 300, 301, 302, 304, 306], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "TestGenerateRecipeJson": {"executed_lines": [314, 315, 317, 318, 323, 325, 329, 330, 332, 333, 335, 337], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309}, "TestGenerateSoundsJson": {"executed_lines": [345, 346, 348, 350, 354, 355, 357, 358, 359, 360, 362, 364, 365, 369, 370, 372, 373, 374, 375, 377, 379], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestCreateMcaddonZip": {"executed_lines": [423, 424, 426, 428, 429, 430, 431, 433, 434, 435, 436, 437, 438, 439, 441, 443, 444, 445, 447, 449, 456, 457, 459, 461, 462, 463, 464, 465, 466, 467, 469, 471, 472, 473, 475, 477, 484, 485, 487, 489, 490, 493, 495, 496, 497, 498, 499, 500, 501, 503, 505, 506, 507, 509, 511], "summary": {"covered_lines": 55, "num_statements": 59, "percent_covered": 93.22033898305085, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.22033898305085, "percent_statements_covered_display": "93"}, "missing_lines": [391, 400, 408, 416], "excluded_lines": [], "start_line": 382}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 16, 19, 26, 34, 43, 50, 57, 65, 68, 84, 97, 111, 114, 130, 133, 148, 163, 177, 195, 198, 212, 225, 238, 252, 255, 266, 280, 294, 309, 312, 327, 340, 343, 352, 367, 382, 385, 386, 387, 388, 389, 393, 394, 395, 396, 397, 398, 402, 403, 404, 405, 406, 410, 411, 412, 413, 414, 418, 419, 420, 421, 451, 452, 453, 454, 479, 480, 481, 482], "summary": {"covered_lines": 77, "num_statements": 77, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_addon_exporter_security.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 18, 19, 20, 21, 24, 25, 26, 27, 30, 32, 55, 58, 59, 60, 61, 63, 67, 68, 71, 72], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 96.7741935483871, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97"}, "missing_lines": [64], "excluded_lines": [], "functions": {"test_create_mcaddon_zip_prevents_zip_slip": {"executed_lines": [18, 19, 20, 21, 24, 25, 26, 27, 30, 32, 55, 58, 59, 60, 61, 63, 67, 68, 71, 72], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [64], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 18, 19, 20, 21, 24, 25, 26, 27, 30, 32, 55, 58, 59, 60, 61, 63, 67, 68, 71, 72], "summary": {"covered_lines": 30, "num_statements": 31, "percent_covered": 96.7741935483871, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.7741935483871, "percent_statements_covered_display": "97"}, "missing_lines": [64], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_advanced_events.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 62, 63, 65, 66, 67, 68, 69, 71, 72, 84, 85, 87, 88, 89, 90, 91, 92, 93, 95, 96, 108, 109, 110, 111, 113, 114, 115, 116, 117, 119, 120, 121, 122, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 94, "num_statements": 94, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"app": {"executed_lines": [11, 12, 13], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "test_get_event_types": {"executed_lines": [17, 18, 19, 20, 21, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "test_get_trigger_types": {"executed_lines": [26, 27, 28, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "test_get_action_types": {"executed_lines": [33, 34, 35, 36], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "test_get_event_templates": {"executed_lines": [40, 41, 42, 43, 44, 45], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "test_create_event_system_invalid_uuid": {"executed_lines": [49, 50, 62, 63], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "test_create_event_system_not_found": {"executed_lines": [68, 69, 71, 72, 84, 85], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "test_create_event_system_success": {"executed_lines": [91, 92, 93, 95, 96, 108, 109, 110, 111], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "test_get_event_system_501": {"executed_lines": [115, 116, 117], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "test_test_event_system": {"executed_lines": [121, 122, 129, 130, 131, 132], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "test_generate_functions": {"executed_lines": [136, 137, 138, 139], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "test_get_debug_info": {"executed_lines": [143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 15, 16, 24, 25, 31, 32, 38, 39, 47, 48, 65, 66, 67, 87, 88, 89, 90, 113, 114, 119, 120, 134, 135, 141, 142], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 62, 63, 65, 66, 67, 68, 69, 71, 72, 84, 85, 87, 88, 89, 90, 91, 92, 93, 95, 96, 108, 109, 110, 111, 113, 114, 115, 116, 117, 119, 120, 121, 122, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 94, "num_statements": 94, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_ai_engine_client_coverage.py": {"executed_lines": [6, 7, 8, 9, 12, 15, 17, 19, 20, 21, 23, 25, 27, 28, 31, 34, 36, 38, 40, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 64, 66, 69, 72, 73, 75, 77, 79, 81, 82, 84, 85, 87, 89, 90, 92, 94, 96, 97, 99, 101, 102, 103, 105, 107, 110, 113, 114, 116, 118, 119, 121, 123, 125, 126, 128, 130, 131, 133, 135, 138, 141, 142, 144, 146, 147, 148, 150, 151, 152, 153, 155, 157, 159, 160, 162, 164, 165, 166, 168, 169, 170, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 189, 192, 195, 196, 198, 200, 201, 202, 203, 205, 206, 207, 208, 210, 212, 214, 215, 217, 219, 220, 221, 222, 224, 225, 226, 227, 229, 230, 232, 234, 235, 237, 239, 240, 241, 242, 244, 245, 246, 247, 249, 253, 254, 257, 260, 261, 263, 265, 266, 267, 268, 270, 271, 272, 273, 275, 277, 279, 280, 282, 284, 285, 286, 288, 289, 290, 291, 293, 294, 296, 299, 302, 303, 305, 307, 309, 310, 312, 313, 314, 316, 317, 318, 321, 327, 329, 330, 331, 335, 337, 338, 340, 342, 344, 345, 347, 349, 350, 351, 352, 357, 359, 360, 362, 365, 368, 369, 371, 373, 375, 380, 381, 383, 385, 386, 388, 389, 391, 393, 395, 397, 398, 400, 404, 407, 410, 412, 414, 415, 417, 420, 423, 424, 426, 427, 429, 431, 434], "summary": {"covered_lines": 241, "num_statements": 241, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestAIEngineError.test_ai_engine_error_basic": {"executed_lines": [17, 19, 20, 21], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestAIEngineError.test_ai_engine_error_with_status_code": {"executed_lines": [25, 27, 28], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestAIEngineClientInit.test_init_default": {"executed_lines": [36, 38, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestAIEngineClientInit.test_init_custom_url": {"executed_lines": [45, 47, 49], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestAIEngineClientInit.test_init_url_strip_trailing_slash": {"executed_lines": [53, 55, 57], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestAIEngineClientInit.test_init_custom_timeout": {"executed_lines": [61, 63, 64, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "TestAIEngineClientGetClient.test_get_client_creates_new": {"executed_lines": [75, 77, 79, 81, 82], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestAIEngineClientGetClient.test_get_client_reuses_existing": {"executed_lines": [87, 89, 90, 92, 94], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestAIEngineClientGetClient.test_get_client_after_close": {"executed_lines": [99, 101, 102, 103, 105, 107], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestAIEngineClientClose.test_close_basic": {"executed_lines": [116, 118, 119, 121, 123], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestAIEngineClientClose.test_close_when_already_closed": {"executed_lines": [128, 130, 131, 133, 135], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "TestAIEngineClientHealthCheck.test_health_check_success": {"executed_lines": [144, 146, 147, 148, 150, 151, 152, 153, 155, 157], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestAIEngineClientHealthCheck.test_health_check_failure": {"executed_lines": [162, 164, 165, 166, 168, 169, 170, 171, 173, 175], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestAIEngineClientHealthCheck.test_health_check_exception": {"executed_lines": [180, 182, 184, 185, 187, 189], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestAIEngineClientStartConversion.test_start_conversion_success": {"executed_lines": [198, 200, 201, 202, 203, 205, 206, 207, 208, 210, 212], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "TestAIEngineClientStartConversion.test_start_conversion_failure": {"executed_lines": [217, 219, 220, 221, 222, 224, 225, 226, 227, 229, 230, 232], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 215}, "TestAIEngineClientStartConversion.test_start_conversion_with_experiment": {"executed_lines": [237, 239, 240, 241, 242, 244, 245, 246, 247, 249, 253, 254], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235}, "TestAIEngineClientGetConversionStatus.test_get_status_success": {"executed_lines": [263, 265, 266, 267, 268, 270, 271, 272, 273, 275, 277], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "TestAIEngineClientGetConversionStatus.test_get_status_not_found": {"executed_lines": [282, 284, 285, 286, 288, 289, 290, 291, 293, 294, 296], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestAIEngineClientDownloadConvertedFile.test_download_success": {"executed_lines": [305, 307, 309, 310, 312, 313, 314, 316, 317, 318, 321, 327, 329, 330, 331, 335], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "TestAIEngineClientDownloadConvertedFile.test_download_conversion_failed": {"executed_lines": [340, 342, 344, 345, 347, 349, 350, 351, 352, 357, 359, 360, 362], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 338}, "TestAIEngineClientPollConversionStatus.test_poll_completes_successfully": {"executed_lines": [371, 373, 375, 380, 381, 383, 385, 386], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestAIEngineClientPollConversionStatus.test_poll_with_custom_interval": {"executed_lines": [391, 393, 395, 397, 398, 400, 404], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestGetAIEngineClient.test_get_client_singleton": {"executed_lines": [412, 414, 415, 417], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 410}, "TestCloseAIEngineClient.test_close_global_client": {"executed_lines": [426, 427, 429, 431, 434], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424}, "": {"executed_lines": [6, 7, 8, 9, 12, 15, 23, 31, 34, 43, 51, 59, 69, 72, 73, 84, 85, 96, 97, 110, 113, 114, 125, 126, 138, 141, 142, 159, 160, 177, 178, 192, 195, 196, 214, 215, 234, 235, 257, 260, 261, 279, 280, 299, 302, 303, 337, 338, 365, 368, 369, 388, 389, 407, 410, 420, 423, 424], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAIEngineError": {"executed_lines": [17, 19, 20, 21, 25, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestAIEngineClientInit": {"executed_lines": [36, 38, 40, 41, 45, 47, 49, 53, 55, 57, 61, 63, 64, 66], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestAIEngineClientGetClient": {"executed_lines": [75, 77, 79, 81, 82, 87, 89, 90, 92, 94, 99, 101, 102, 103, 105, 107], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestAIEngineClientClose": {"executed_lines": [116, 118, 119, 121, 123, 128, 130, 131, 133, 135], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestAIEngineClientHealthCheck": {"executed_lines": [144, 146, 147, 148, 150, 151, 152, 153, 155, 157, 162, 164, 165, 166, 168, 169, 170, 171, 173, 175, 180, 182, 184, 185, 187, 189], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestAIEngineClientStartConversion": {"executed_lines": [198, 200, 201, 202, 203, 205, 206, 207, 208, 210, 212, 217, 219, 220, 221, 222, 224, 225, 226, 227, 229, 230, 232, 237, 239, 240, 241, 242, 244, 245, 246, 247, 249, 253, 254], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 192}, "TestAIEngineClientGetConversionStatus": {"executed_lines": [263, 265, 266, 267, 268, 270, 271, 272, 273, 275, 277, 282, 284, 285, 286, 288, 289, 290, 291, 293, 294, 296], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestAIEngineClientDownloadConvertedFile": {"executed_lines": [305, 307, 309, 310, 312, 313, 314, 316, 317, 318, 321, 327, 329, 330, 331, 335, 340, 342, 344, 345, 347, 349, 350, 351, 352, 357, 359, 360, 362], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestAIEngineClientPollConversionStatus": {"executed_lines": [371, 373, 375, 380, 381, 383, 385, 386, 391, 393, 395, 397, 398, 400, 404], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestGetAIEngineClient": {"executed_lines": [412, 414, 415, 417], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 407}, "TestCloseAIEngineClient": {"executed_lines": [426, 427, 429, 431, 434], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "": {"executed_lines": [6, 7, 8, 9, 12, 15, 23, 31, 34, 43, 51, 59, 69, 72, 73, 84, 85, 96, 97, 110, 113, 114, 125, 126, 138, 141, 142, 159, 160, 177, 178, 192, 195, 196, 214, 215, 234, 235, 257, 260, 261, 279, 280, 299, 302, 303, 337, 338, 365, 368, 369, 388, 389, 407, 410, 420, 423, 424], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_analytics_service_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 13, 16, 18, 20, 21, 22, 23, 25, 27, 29, 30, 31, 33, 35, 37, 38, 39, 41, 43, 45, 46, 47, 50, 53, 55, 57, 60, 62, 64, 68, 72, 74, 76, 78, 79, 81, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 104, 106, 108, 110, 111, 114, 117, 118, 120, 121, 123, 124, 125, 126, 128, 130, 137, 138, 139, 140, 141, 142, 144, 145, 147, 148, 150, 151, 152, 153, 155, 157, 163, 164, 166, 167, 169, 170, 172, 173, 174, 175, 177, 180, 186, 188, 189, 191, 192, 194, 195, 196, 197, 199, 200, 202, 208, 210, 211, 213, 214, 216, 217, 218, 219, 221, 223, 225, 231, 234, 237, 238, 240, 242, 243, 244, 245, 247, 249, 251, 252, 254, 255, 257, 259, 260, 261, 262, 264, 266, 268, 270, 271, 273, 275, 276, 277, 278, 280, 282, 283, 285, 293, 296, 299, 300, 302, 304, 305, 306, 307, 309, 311, 313, 314, 315, 317, 318, 320, 322, 323, 324, 325, 327, 329, 331, 333, 334, 336, 338, 339, 340, 341, 343, 345, 347, 350, 353, 354, 356, 358, 359, 360, 361, 363, 365, 367, 369, 370, 372, 374, 375, 376, 377, 379, 381, 382, 384, 386, 389, 392, 393, 394, 398, 399, 400, 405, 408, 409, 411, 413, 415, 417, 419, 420, 422, 424, 426, 434, 437, 440, 442, 444, 445, 446, 448, 450, 452, 453, 454, 456, 458, 460, 461, 462, 465, 468, 470, 472, 474, 476, 477, 479, 481, 483, 484, 486, 487], "summary": {"covered_lines": 259, "num_statements": 261, "percent_covered": 99.23371647509579, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.23371647509579, "percent_statements_covered_display": "99"}, "missing_lines": [396, 402], "excluded_lines": [], "functions": {"TestAnalyticsServiceHashing.test_hash_ip_basic": {"executed_lines": [18, 20, 21, 22, 23], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestAnalyticsServiceHashing.test_hash_ip_different_ips": {"executed_lines": [27, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestAnalyticsServiceHashing.test_hash_ip_empty_string": {"executed_lines": [35, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestAnalyticsServiceHashing.test_hash_ip_ipv6": {"executed_lines": [43, 45, 46, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestDeviceTypeDetection.test_get_device_type_mobile_android": {"executed_lines": [55, 57, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestDeviceTypeDetection.test_get_device_type_mobile_iphone": {"executed_lines": [64, 68, 72], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "TestDeviceTypeDetection.test_get_device_type_tablet_ipad": {"executed_lines": [76, 78, 79], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestDeviceTypeDetection.test_get_device_type_tablet_android": {"executed_lines": [83, 85, 88], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestDeviceTypeDetection.test_get_device_type_desktop": {"executed_lines": [92, 94, 97], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestDeviceTypeDetection.test_get_device_type_none": {"executed_lines": [101, 103, 104], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestDeviceTypeDetection.test_get_device_type_empty_string": {"executed_lines": [108, 110, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestAnalyticsServiceTrackEvent.test_track_event_basic": {"executed_lines": [120, 121, 123, 124, 125, 126, 128, 130, 137, 138, 139, 140, 141, 142], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestAnalyticsServiceTrackEvent.test_track_event_with_ip_hashing": {"executed_lines": [147, 148, 150, 151, 152, 153, 155, 157, 163, 164], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "TestAnalyticsServiceTrackEvent.test_track_event_with_device_detection": {"executed_lines": [169, 170, 172, 173, 174, 175, 177, 180, 186], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestAnalyticsServiceTrackEvent.test_track_event_with_conversion_id": {"executed_lines": [191, 192, 194, 195, 196, 197, 199, 200, 202, 208], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestAnalyticsServiceTrackEvent.test_track_event_with_properties": {"executed_lines": [213, 214, 216, 217, 218, 219, 221, 223, 225, 231], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "TestAnalyticsServiceGetEvents.test_get_events_empty_filters": {"executed_lines": [240, 242, 243, 244, 245, 247, 249, 251, 252], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestAnalyticsServiceGetEvents.test_get_events_with_type_filter": {"executed_lines": [257, 259, 260, 261, 262, 264, 266, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestAnalyticsServiceGetEvents.test_get_events_with_multiple_filters": {"executed_lines": [273, 275, 276, 277, 278, 280, 282, 283, 285, 293], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "TestAnalyticsServiceGetEventCounts.test_get_event_counts_basic": {"executed_lines": [302, 304, 305, 306, 307, 309, 311, 313, 314, 315], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestAnalyticsServiceGetEventCounts.test_get_event_counts_by_category": {"executed_lines": [320, 322, 323, 324, 325, 327, 329, 331], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318}, "TestAnalyticsServiceGetEventCounts.test_get_event_counts_by_device_type": {"executed_lines": [336, 338, 339, 340, 341, 343, 345, 347], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "TestAnalyticsServiceGetUniqueUsers.test_get_unique_users_basic": {"executed_lines": [356, 358, 359, 360, 361, 363, 365, 367], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestAnalyticsServiceGetUniqueUsers.test_get_unique_users_with_date_range": {"executed_lines": [372, 374, 375, 376, 377, 379, 381, 382, 384, 386], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "TestAnalyticsServiceGetEventsTimeline.test_get_events_timeline_basic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [396], "excluded_lines": [], "start_line": 394}, "TestAnalyticsServiceGetEventsTimeline.test_get_events_timeline_with_filters": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [402], "excluded_lines": [], "start_line": 400}, "TestAnalyticsServiceTrackFeedback.test_track_feedback_submitted_with_none_db": {"executed_lines": [411, 413, 415, 417], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 409}, "TestAnalyticsServiceTrackFeedback.test_track_feedback_returns_when_db_is_none": {"executed_lines": [422, 424, 426, 434], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "TestAnalyticsEventsConstants.test_page_view_constants": {"executed_lines": [442, 444, 445, 446], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440}, "TestAnalyticsEventsConstants.test_conversion_constants": {"executed_lines": [450, 452, 453, 454], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 448}, "TestAnalyticsEventsConstants.test_category_constants": {"executed_lines": [458, 460, 461, 462], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456}, "TestGetAnalyticsService.test_get_analytics_service_with_db": {"executed_lines": [470, 472, 474, 476, 477], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468}, "TestGetAnalyticsService.test_get_analytics_service_singleton": {"executed_lines": [481, 483, 484, 486, 487], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 479}, "": {"executed_lines": [6, 7, 8, 9, 10, 13, 16, 25, 33, 41, 50, 53, 62, 74, 81, 90, 99, 106, 114, 117, 118, 144, 145, 166, 167, 188, 189, 210, 211, 234, 237, 238, 254, 255, 270, 271, 296, 299, 300, 317, 318, 333, 334, 350, 353, 354, 369, 370, 389, 392, 393, 394, 398, 399, 400, 405, 408, 409, 419, 420, 437, 440, 448, 456, 465, 468, 479], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAnalyticsServiceHashing": {"executed_lines": [18, 20, 21, 22, 23, 27, 29, 30, 31, 35, 37, 38, 39, 43, 45, 46, 47], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestDeviceTypeDetection": {"executed_lines": [55, 57, 60, 64, 68, 72, 76, 78, 79, 83, 85, 88, 92, 94, 97, 101, 103, 104, 108, 110, 111], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestAnalyticsServiceTrackEvent": {"executed_lines": [120, 121, 123, 124, 125, 126, 128, 130, 137, 138, 139, 140, 141, 142, 147, 148, 150, 151, 152, 153, 155, 157, 163, 164, 169, 170, 172, 173, 174, 175, 177, 180, 186, 191, 192, 194, 195, 196, 197, 199, 200, 202, 208, 213, 214, 216, 217, 218, 219, 221, 223, 225, 231], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestAnalyticsServiceGetEvents": {"executed_lines": [240, 242, 243, 244, 245, 247, 249, 251, 252, 257, 259, 260, 261, 262, 264, 266, 268, 273, 275, 276, 277, 278, 280, 282, 283, 285, 293], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "TestAnalyticsServiceGetEventCounts": {"executed_lines": [302, 304, 305, 306, 307, 309, 311, 313, 314, 315, 320, 322, 323, 324, 325, 327, 329, 331, 336, 338, 339, 340, 341, 343, 345, 347], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "TestAnalyticsServiceGetUniqueUsers": {"executed_lines": [356, 358, 359, 360, 361, 363, 365, 367, 372, 374, 375, 376, 377, 379, 381, 382, 384, 386], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestAnalyticsServiceGetEventsTimeline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [396, 402], "excluded_lines": [], "start_line": 389}, "TestAnalyticsServiceTrackFeedback": {"executed_lines": [411, 413, 415, 417, 422, 424, 426, 434], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "TestAnalyticsEventsConstants": {"executed_lines": [442, 444, 445, 446, 450, 452, 453, 454, 458, 460, 461, 462], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437}, "TestGetAnalyticsService": {"executed_lines": [470, 472, 474, 476, 477, 481, 483, 484, 486, 487], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 465}, "": {"executed_lines": [6, 7, 8, 9, 10, 13, 16, 25, 33, 41, 50, 53, 62, 74, 81, 90, 99, 106, 114, 117, 118, 144, 145, 166, 167, 188, 189, 210, 211, 234, 237, 238, 254, 255, 270, 271, 296, 299, 300, 317, 318, 333, 334, 350, 353, 354, 369, 370, 389, 392, 393, 394, 398, 399, 400, 405, 408, 409, 419, 420, 437, 440, 448, 456, 465, 468, 479], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_advanced_events_targeted.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 10, 13, 14, 16, 17, 18, 19, 21, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 53, 55, 71, 73, 74, 75, 77, 78, 82, 83, 84, 86, 87, 88, 89, 90, 92, 93, 97, 99, 100, 101, 103, 104, 109, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125], "summary": {"covered_lines": 78, "num_statements": 78, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"client": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestAdvancedEventsAPITargeted.test_get_event_types": {"executed_lines": [24, 25, 26], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestAdvancedEventsAPITargeted.test_get_trigger_types": {"executed_lines": [29, 30, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestAdvancedEventsAPITargeted.test_get_action_types": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestAdvancedEventsAPITargeted.test_get_event_templates": {"executed_lines": [39, 40, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestAdvancedEventsAPITargeted.test_create_event_system_success": {"executed_lines": [47, 49, 50, 51, 52, 53, 55, 71, 73, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestAdvancedEventsAPITargeted.test_create_event_system_invalid_uuid": {"executed_lines": [78, 82, 83, 84], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestAdvancedEventsAPITargeted.test_create_event_system_not_found": {"executed_lines": [89, 90, 92, 93, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestAdvancedEventsAPITargeted.test_get_event_system_not_implemented": {"executed_lines": [100, 101], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestAdvancedEventsAPITargeted.test_test_event_system": {"executed_lines": [104, 109, 110, 111, 112], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestAdvancedEventsAPITargeted.test_generate_event_system_functions": {"executed_lines": [116, 117, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestAdvancedEventsAPITargeted.test_get_event_system_debug": {"executed_lines": [123, 124, 125], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 10, 13, 14, 16, 17, 21, 23, 28, 33, 38, 44, 45, 46, 77, 86, 87, 88, 99, 103, 114, 115, 122], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAdvancedEventsAPITargeted": {"executed_lines": [24, 25, 26, 29, 30, 31, 34, 35, 36, 39, 40, 41, 42, 47, 49, 50, 51, 52, 53, 55, 71, 73, 74, 75, 78, 82, 83, 84, 89, 90, 92, 93, 97, 100, 101, 104, 109, 110, 111, 112, 116, 117, 118, 119, 120, 123, 124, 125], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 10, 13, 14, 16, 17, 18, 19, 21, 23, 28, 33, 38, 44, 45, 46, 77, 86, 87, 88, 99, 103, 114, 115, 122], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_assets.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 47, 48, 49, 51, 53, 54, 56, 57, 58, 59, 61, 63, 64, 66, 67, 68, 69, 70, 72, 77, 78, 80, 81, 82, 83, 84, 86, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 117, 119, 120, 122, 123, 124, 130, 132, 134, 135], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_asset": {"executed_lines": [17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "test_list_conversion_assets": {"executed_lines": [35, 36, 38, 40, 41, 42, 43, 44], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "test_get_asset_success": {"executed_lines": [48, 49, 51, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "test_get_asset_not_found": {"executed_lines": [58, 59, 61, 63, 64], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "test_update_asset_status": {"executed_lines": [68, 69, 70, 72, 77, 78], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "test_update_asset_metadata": {"executed_lines": [82, 83, 84, 86, 91, 92], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "test_delete_asset": {"executed_lines": [99, 100, 101, 102, 104, 106, 107, 108], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "test_trigger_asset_conversion": {"executed_lines": [113, 114, 115, 117, 119, 120], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "test_convert_all_conversion_assets": {"executed_lines": [124, 130, 132, 134, 135], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 33, 34, 46, 47, 56, 57, 66, 67, 80, 81, 94, 95, 96, 97, 98, 110, 111, 112, 122, 123], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 47, 48, 49, 51, 53, 54, 56, 57, 58, 59, 61, 63, 64, 66, 67, 68, 69, 70, 72, 77, 78, 80, 81, 82, 83, 84, 86, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 106, 107, 108, 110, 111, 112, 113, 114, 115, 117, 119, 120, 122, 123, 124, 130, 132, 134, 135], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_auth_simple.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 37, 39, 40, 41, 42, 43, 44, 48, 51, 55, 56, 58, 61, 64, 66, 67, 68, 70, 74, 75, 76, 77, 79, 81, 83, 84, 85, 86, 87, 89, 93, 94, 96, 98, 102, 105, 108, 110, 112, 113, 114, 115, 116, 118, 119, 120, 122, 123, 127, 128, 129, 130, 132, 134, 135, 136, 138, 142, 144, 146, 148, 149, 150, 151, 152, 154, 155, 156, 158, 159, 164, 166, 168, 170, 171, 172, 173, 174, 176, 177, 178, 180, 181, 185, 188, 191, 193, 197, 198, 201, 204, 206, 208, 209, 211, 212, 213, 215, 217, 218, 219, 221, 223, 224, 225, 227, 228, 230, 233, 236, 238, 240, 241, 242, 243, 245, 246, 247, 249, 251, 252, 254, 256, 257, 258, 260, 262, 265, 268, 270, 272, 273, 275, 276, 277, 279, 281, 282, 284, 286, 287, 288, 290, 294, 297, 300, 302, 304, 305, 306, 308, 309, 310, 312, 316, 317, 319, 321, 322, 323, 325, 329, 332, 335, 337, 339, 340, 341, 342, 343, 344, 346, 348, 350, 351, 352, 353, 355, 357, 379, 395, 419, 437, 439, 441, 442, 443, 444, 445, 447, 448, 450, 451, 452, 454, 456, 458, 460, 462, 464, 465, 467, 468, 470, 472, 473, 475], "summary": {"covered_lines": 227, "num_statements": 273, "percent_covered": 83.15018315018315, "percent_covered_display": "83", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 83.15018315018315, "percent_statements_covered_display": "83"}, "missing_lines": [359, 361, 362, 363, 364, 365, 367, 369, 370, 371, 373, 375, 377, 381, 383, 384, 386, 388, 390, 391, 393, 397, 398, 400, 401, 402, 403, 404, 406, 407, 409, 410, 411, 413, 415, 417, 421, 422, 424, 425, 427, 428, 430, 432, 433, 435], "excluded_lines": [], "functions": {"mock_db": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "client": {"executed_lines": [35, 37, 39, 40, 41, 42, 43, 44, 48, 51, 55, 56, 58], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestRegisterEndpoint.test_register_success": {"executed_lines": [66, 67, 68, 70, 74, 75, 76, 77], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestRegisterEndpoint.test_register_duplicate_email": {"executed_lines": [81, 83, 84, 85, 86, 87, 89, 93, 94], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "TestRegisterEndpoint.test_register_weak_password": {"executed_lines": [98, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "TestLoginEndpoint.test_login_success": {"executed_lines": [110, 112, 113, 114, 115, 116, 118, 119, 120, 122, 123, 127, 128, 129, 130], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestLoginEndpoint.test_login_invalid_email": {"executed_lines": [134, 135, 136, 138, 142], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestLoginEndpoint.test_login_invalid_password": {"executed_lines": [146, 148, 149, 150, 151, 152, 154, 155, 156, 158, 159, 164], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TestLoginEndpoint.test_login_unverified_email": {"executed_lines": [168, 170, 171, 172, 173, 174, 176, 177, 178, 180, 181, 185], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestLogoutEndpoint.test_logout_success": {"executed_lines": [193, 197, 198], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestRefreshEndpoint.test_refresh_success": {"executed_lines": [206, 208, 209, 211, 212, 213, 215, 217, 218, 219], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestRefreshEndpoint.test_refresh_invalid_token": {"executed_lines": [223, 224, 225, 227, 228, 230], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestVerifyEmailEndpoint.test_verify_email_success": {"executed_lines": [238, 240, 241, 242, 243, 245, 246, 247, 249, 251, 252], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestVerifyEmailEndpoint.test_verify_email_invalid_token": {"executed_lines": [256, 257, 258, 260, 262], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestForgotPasswordEndpoint.test_forgot_password_existing_user": {"executed_lines": [270, 272, 273, 275, 276, 277, 279, 281, 282], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "TestForgotPasswordEndpoint.test_forgot_password_nonexistent_user": {"executed_lines": [286, 287, 288, 290, 294], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "TestResetPasswordEndpoint.test_reset_password_success": {"executed_lines": [302, 304, 305, 306, 308, 309, 310, 312, 316, 317], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestResetPasswordEndpoint.test_reset_password_invalid_token": {"executed_lines": [321, 322, 323, 325, 329], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestMeEndpoint.test_get_me_success": {"executed_lines": [337, 339, 340, 341, 342, 343, 344, 346, 348, 350, 351, 352, 353, 355], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestMeEndpoint.test_patch_me_success": {"executed_lines": [439, 441, 442, 443, 444, 445, 447, 448, 450, 451, 452, 454, 456, 458], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437}, "TestMeEndpoint.test_delete_me_success": {"executed_lines": [462, 464, 465, 467, 468, 470, 472, 473, 475], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 17, 20, 21, 32, 33, 61, 64, 79, 96, 105, 108, 132, 144, 166, 188, 191, 201, 204, 221, 233, 236, 254, 265, 268, 284, 297, 300, 319, 332, 335, 357, 379, 395, 419, 437, 460], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRegisterEndpoint": {"executed_lines": [66, 67, 68, 70, 74, 75, 76, 77, 81, 83, 84, 85, 86, 87, 89, 93, 94, 98, 102], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestLoginEndpoint": {"executed_lines": [110, 112, 113, 114, 115, 116, 118, 119, 120, 122, 123, 127, 128, 129, 130, 134, 135, 136, 138, 142, 146, 148, 149, 150, 151, 152, 154, 155, 156, 158, 159, 164, 168, 170, 171, 172, 173, 174, 176, 177, 178, 180, 181, 185], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestLogoutEndpoint": {"executed_lines": [193, 197, 198], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestRefreshEndpoint": {"executed_lines": [206, 208, 209, 211, 212, 213, 215, 217, 218, 219, 223, 224, 225, 227, 228, 230], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestVerifyEmailEndpoint": {"executed_lines": [238, 240, 241, 242, 243, 245, 246, 247, 249, 251, 252, 256, 257, 258, 260, 262], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "TestForgotPasswordEndpoint": {"executed_lines": [270, 272, 273, 275, 276, 277, 279, 281, 282, 286, 287, 288, 290, 294], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestResetPasswordEndpoint": {"executed_lines": [302, 304, 305, 306, 308, 309, 310, 312, 316, 317, 321, 322, 323, 325, 329], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "TestMeEndpoint": {"executed_lines": [337, 339, 340, 341, 342, 343, 344, 346, 348, 350, 351, 352, 353, 355, 439, 441, 442, 443, 444, 445, 447, 448, 450, 451, 452, 454, 456, 458, 462, 464, 465, 467, 468, 470, 472, 473, 475], "summary": {"covered_lines": 37, "num_statements": 83, "percent_covered": 44.57831325301205, "percent_covered_display": "45", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 44.57831325301205, "percent_statements_covered_display": "45"}, "missing_lines": [359, 361, 362, 363, 364, 365, 367, 369, 370, 371, 373, 375, 377, 381, 383, 384, 386, 388, 390, 391, 393, 397, 398, 400, 401, 402, 403, 404, 406, 407, 409, 410, 411, 413, 415, 417, 421, 422, 424, 425, 427, 428, 430, 432, 433, 435], "excluded_lines": [], "start_line": 332}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 16, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 37, 39, 40, 41, 42, 43, 44, 48, 51, 55, 56, 58, 61, 64, 79, 96, 105, 108, 132, 144, 166, 188, 191, 201, 204, 221, 233, 236, 254, 265, 268, 284, 297, 300, 319, 332, 335, 357, 379, 395, 419, 437, 460], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_batch_and_build.py": {"executed_lines": [10, 11, 12, 13, 14, 21, 24, 25, 28, 29, 31, 32, 33, 34, 37, 38, 40, 42, 44, 45, 46, 47, 49, 51, 54, 57, 59, 65, 66, 67, 69, 71, 77, 85, 87, 94, 97, 105, 107, 112, 115, 117, 120], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_feedback_db": {"executed_lines": [31, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "feedback_client": {"executed_lines": [40, 42, 44, 45, 46, 47, 49, 51], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestFeedbackEndpoints.test_submit_bug_report": {"executed_lines": [59, 65, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestFeedbackEndpoints.test_submit_bug_report_critical": {"executed_lines": [71, 77], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "test_build_performance_models_import": {"executed_lines": [87, 94, 97], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "test_batch_conversion_models": {"executed_lines": [107, 112, 115, 117, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "": {"executed_lines": [10, 11, 12, 13, 14, 21, 24, 25, 28, 29, 37, 38, 54, 57, 69, 85, 105], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeedbackEndpoints": {"executed_lines": [59, 65, 66, 67, 71, 77], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "": {"executed_lines": [10, 11, 12, 13, 14, 21, 24, 25, 28, 29, 31, 32, 33, 34, 37, 38, 40, 42, 44, 45, 46, 47, 49, 51, 54, 57, 69, 85, 87, 94, 97, 105, 107, 112, 115, 117, 120], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_batch_conversion.py": {"executed_lines": [5, 6, 7, 8, 11, 14, 16, 18, 22, 23, 25, 27, 29, 33, 35, 37, 38, 40, 41, 43, 45, 46, 48, 49, 50, 53, 56, 58, 60, 67, 68, 71, 74, 76, 78, 87, 88, 91, 94, 96, 98, 104], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestBatchConversionRequest.test_valid_batch_request": {"executed_lines": [16, 18, 22, 23], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestBatchConversionRequest.test_batch_request_with_priority": {"executed_lines": [27, 29, 33], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestBatchConversionRequest.test_batch_request_invalid_min_items": {"executed_lines": [37, 38, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestBatchConversionRequest.test_batch_request_invalid_max_items": {"executed_lines": [45, 46, 48, 49, 50], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestBatchConversionResponse.test_response_model": {"executed_lines": [58, 60, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestBatchStatusResponse.test_status_response_model": {"executed_lines": [76, 78, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestBatchResultResponse.test_result_response_model": {"executed_lines": [96, 98, 104], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 25, 35, 43, 53, 56, 71, 74, 91, 94], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBatchConversionRequest": {"executed_lines": [16, 18, 22, 23, 27, 29, 33, 37, 38, 40, 41, 45, 46, 48, 49, 50], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "TestBatchConversionResponse": {"executed_lines": [58, 60, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestBatchStatusResponse": {"executed_lines": [76, 78, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestBatchResultResponse": {"executed_lines": [96, 98, 104], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 25, 35, 43, 53, 56, 71, 74, 91, 94], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_behavior_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 15, 18, 20, 22, 26, 27, 29, 31, 33, 35, 37, 39, 41, 51, 54, 57, 59, 61, 68, 70, 72, 74, 83, 86, 89, 90, 92, 93, 95, 96, 102, 104, 106, 108, 110, 128, 130, 131, 134, 137, 138, 140, 142, 144, 145, 146, 147, 150, 153, 154, 156, 157, 158, 160, 162, 163, 165, 166, 167, 168, 169, 170, 172, 173, 176, 179, 180, 181, 183, 185, 187, 189, 190, 192, 193, 194, 196, 198, 200, 201, 203, 205, 206, 208, 209, 210, 212, 214, 215, 217, 219, 220, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 240, 241, 243, 245, 246, 248, 251, 254, 255, 257, 258, 259, 261, 263, 264, 266, 267, 268, 269, 270, 272, 273, 276, 277, 279, 281, 282, 284, 285, 287, 288, 289, 291, 293, 294, 296, 299, 302, 303, 305, 306, 307, 309, 311, 312, 314, 315, 316, 317, 318, 320, 322, 323, 325, 328, 331, 332, 334, 335, 336, 338, 340, 341, 343, 344, 345, 346, 347, 348, 350, 351, 354, 357, 358, 359, 360, 362, 363, 364, 366, 370, 372, 375, 378, 379, 381, 382, 383, 384, 386, 388, 389, 391, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 403, 404, 406, 407, 410, 413, 416, 417, 418, 419, 421, 422, 423, 425, 426, 428, 432, 434, 437, 440, 441, 443, 444, 445, 447, 449, 450, 452, 457, 458, 459, 460, 461, 462, 464, 465, 468, 471, 472, 473, 475, 481, 483, 486, 489, 490, 492, 493, 494, 496, 498, 499, 501, 502, 503, 504, 505, 506, 508, 509, 510, 511, 512, 513, 515, 516, 519, 522, 523, 524, 526, 532, 534, 537, 540, 541, 543, 544, 545, 547, 549, 550, 552, 553, 554, 555, 556, 558, 559, 560, 561, 562, 564, 565, 568, 569, 571, 573, 574], "summary": {"covered_lines": 312, "num_statements": 312, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestBehaviorFileModels.test_behavior_file_create_model": {"executed_lines": [20, 22, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestBehaviorFileModels.test_behavior_file_update_model": {"executed_lines": [31, 33, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestBehaviorFileModels.test_behavior_file_response_model": {"executed_lines": [39, 41, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "TestExportModels.test_export_request_model": {"executed_lines": [59, 61, 68], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestExportModels.test_export_response_model": {"executed_lines": [72, 74, 83], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestBehaviorFilesCrud.test_get_conversion_behavior_files_empty": {"executed_lines": [92, 93, 95, 96, 102, 104], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestBehaviorFilesCrud.test_build_file_tree": {"executed_lines": [108, 110, 128, 130, 131], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestBehaviorExportFormats.test_get_export_formats": {"executed_lines": [140, 142, 144, 145, 146, 147], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestExportBehaviorPack.test_export_json_format": {"executed_lines": [156, 157, 158, 160, 162, 163, 165, 166, 167, 168, 169, 170, 172, 173, 176, 179, 180, 181, 183, 185, 187], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestExportBehaviorPack.test_export_invalid_conversion_id": {"executed_lines": [192, 193, 194, 196, 198, 200, 201, 203], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestExportBehaviorPack.test_export_conversion_not_found": {"executed_lines": [208, 209, 210, 212, 214, 215, 217, 219, 220, 222], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "TestExportBehaviorPack.test_export_no_behavior_files": {"executed_lines": [227, 228, 229, 231, 233, 234, 236, 237, 240, 241, 243, 245, 246, 248], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "TestExportPreview.test_preview_export_basic": {"executed_lines": [257, 258, 259, 261, 263, 264, 266, 267, 268, 269, 270, 272, 273, 276, 277, 279, 281, 282], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestExportPreview.test_preview_invalid_conversion_id": {"executed_lines": [287, 288, 289, 291, 293, 294, 296], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestExportDownload.test_download_export_not_found": {"executed_lines": [305, 306, 307, 309, 311, 312, 314, 315, 316, 317, 318, 320, 322, 323, 325], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "TestExportZipFormat.test_export_zip_format": {"executed_lines": [334, 335, 336, 338, 340, 341, 343, 344, 345, 346, 347, 348, 350, 351, 354, 357, 358, 359, 360, 362, 363, 364, 366, 370, 372], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "TestExportMcaddonFormat.test_export_mcaddon_format": {"executed_lines": [381, 382, 383, 384, 386, 388, 389, 391, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 403, 404, 406, 407, 410, 413, 416, 417, 418, 419, 421, 422, 423, 425, 426, 428, 432, 434], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 379}, "TestExportWithTemplateInfo.test_export_with_template_info": {"executed_lines": [443, 444, 445, 447, 449, 450, 452, 457, 458, 459, 460, 461, 462, 464, 465, 468, 471, 472, 473, 475, 481, 483], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 441}, "TestExportWithFileTypeFilter.test_export_filter_by_file_type": {"executed_lines": [492, 493, 494, 496, 498, 499, 501, 502, 503, 504, 505, 506, 508, 509, 510, 511, 512, 513, 515, 516, 519, 522, 523, 524, 526, 532, 534], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "TestPreviewAnalysis.test_preview_analyzes_file_types": {"executed_lines": [543, 544, 545, 547, 549, 550, 552, 553, 554, 555, 556, 558, 559, 560, 561, 562, 564, 565, 568, 569, 571, 573, 574], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 15, 18, 29, 37, 54, 57, 70, 86, 89, 90, 106, 134, 137, 138, 150, 153, 154, 189, 190, 205, 206, 224, 225, 251, 254, 255, 284, 285, 299, 302, 303, 328, 331, 332, 375, 378, 379, 437, 440, 441, 486, 489, 490, 537, 540, 541], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBehaviorFileModels": {"executed_lines": [20, 22, 26, 27, 31, 33, 35, 39, 41, 51], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestExportModels": {"executed_lines": [59, 61, 68, 72, 74, 83], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestBehaviorFilesCrud": {"executed_lines": [92, 93, 95, 96, 102, 104, 108, 110, 128, 130, 131], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestBehaviorExportFormats": {"executed_lines": [140, 142, 144, 145, 146, 147], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "TestExportBehaviorPack": {"executed_lines": [156, 157, 158, 160, 162, 163, 165, 166, 167, 168, 169, 170, 172, 173, 176, 179, 180, 181, 183, 185, 187, 192, 193, 194, 196, 198, 200, 201, 203, 208, 209, 210, 212, 214, 215, 217, 219, 220, 222, 227, 228, 229, 231, 233, 234, 236, 237, 240, 241, 243, 245, 246, 248], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestExportPreview": {"executed_lines": [257, 258, 259, 261, 263, 264, 266, 267, 268, 269, 270, 272, 273, 276, 277, 279, 281, 282, 287, 288, 289, 291, 293, 294, 296], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "TestExportDownload": {"executed_lines": [305, 306, 307, 309, 311, 312, 314, 315, 316, 317, 318, 320, 322, 323, 325], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestExportZipFormat": {"executed_lines": [334, 335, 336, 338, 340, 341, 343, 344, 345, 346, 347, 348, 350, 351, 354, 357, 358, 359, 360, 362, 363, 364, 366, 370, 372], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "TestExportMcaddonFormat": {"executed_lines": [381, 382, 383, 384, 386, 388, 389, 391, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 403, 404, 406, 407, 410, 413, 416, 417, 418, 419, 421, 422, 423, 425, 426, 428, 432, 434], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 375}, "TestExportWithTemplateInfo": {"executed_lines": [443, 444, 445, 447, 449, 450, 452, 457, 458, 459, 460, 461, 462, 464, 465, 468, 471, 472, 473, 475, 481, 483], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437}, "TestExportWithFileTypeFilter": {"executed_lines": [492, 493, 494, 496, 498, 499, 501, 502, 503, 504, 505, 506, 508, 509, 510, 511, 512, 513, 515, 516, 519, 522, 523, 524, 526, 532, 534], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486}, "TestPreviewAnalysis": {"executed_lines": [543, 544, 545, 547, 549, 550, 552, 553, 554, 555, 556, 558, 559, 560, 561, 562, 564, 565, 568, 569, 571, 573, 574], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 15, 18, 29, 37, 54, 57, 70, 86, 89, 90, 106, 134, 137, 138, 150, 153, 154, 189, 190, 205, 206, 224, 225, 251, 254, 255, 284, 285, 299, 302, 303, 328, 331, 332, 375, 378, 379, 437, 440, 441, 486, 489, 490, 537, 540, 541], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_behavior_export.py": {"executed_lines": [5, 6, 7, 10, 13, 15, 17, 20, 21, 23, 25, 27, 31, 33, 35, 37, 41, 43, 45, 47, 48, 51, 54, 56, 58, 66, 67, 70, 73, 75, 77, 81, 83, 85, 87, 91, 93, 95, 97, 101], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestExportRequest.test_valid_export_request": {"executed_lines": [15, 17, 20, 21], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestExportRequest.test_export_request_with_file_types": {"executed_lines": [25, 27, 31], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestExportRequest.test_export_request_with_options": {"executed_lines": [35, 37, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestExportRequest.test_export_request_default_format": {"executed_lines": [45, 47, 48], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestExportResponse.test_export_response": {"executed_lines": [56, 58, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestExportFormatValidation.test_valid_mcaddon_format": {"executed_lines": [75, 77, 81], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestExportFormatValidation.test_valid_zip_format": {"executed_lines": [85, 87, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestExportFormatValidation.test_valid_json_format": {"executed_lines": [95, 97, 101], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [5, 6, 7, 10, 13, 23, 33, 43, 51, 54, 70, 73, 83, 93], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestExportRequest": {"executed_lines": [15, 17, 20, 21, 25, 27, 31, 35, 37, 41, 45, 47, 48], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TestExportResponse": {"executed_lines": [56, 58, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestExportFormatValidation": {"executed_lines": [75, 77, 81, 85, 87, 91, 95, 97, 101], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "": {"executed_lines": [5, 6, 7, 10, 13, 23, 33, 43, 51, 54, 70, 73, 83, 93], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_conversions_targeted.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 16, 17, 19, 20, 21, 22, 24, 25, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 65, 66, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 84, 89, 90, 92, 93, 94, 96, 97, 99, 100, 101, 102, 104, 105, 117, 118, 120, 122, 123, 124, 125, 126, 128, 129, 130, 131, 133, 134, 135, 147, 149, 151, 152, 153, 154, 156, 157, 158, 159, 160, 162, 163, 165, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 181, 183, 184, 185, 186, 188, 189, 190, 191, 193, 194, 195, 196, 197, 198, 200, 202, 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 138, "num_statements": 140, "percent_covered": 98.57142857142857, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.57142857142857, "percent_statements_covered_display": "99"}, "missing_lines": [26, 30], "excluded_lines": [], "functions": {"client": {"executed_lines": [21, 22], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "mock_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [26], "excluded_lines": [], "start_line": 25}, "mock_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [30], "excluded_lines": [], "start_line": 29}, "mock_security_scanner": {"executed_lines": [34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestConversionsAPITargeted.test_create_conversion_success": {"executed_lines": [65, 66, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 84, 89, 90, 92, 93, 94, 96, 97], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestConversionsAPITargeted.test_list_conversions": {"executed_lines": [102, 104, 105, 117, 118, 120, 122, 123, 124, 125, 126], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestConversionsAPITargeted.test_get_conversion_success": {"executed_lines": [131, 133, 134, 135, 147, 149, 151, 152, 153, 154], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestConversionsAPITargeted.test_get_conversion_not_found": {"executed_lines": [159, 160, 162, 163, 165], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 158}, "TestConversionsAPITargeted.test_download_conversion_success": {"executed_lines": [171, 172, 174, 175, 176, 177, 178, 179, 181, 183, 184, 185, 186], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TestConversionsAPITargeted.test_delete_conversion_success": {"executed_lines": [191, 193, 194, 195, 196, 197, 198, 200, 202], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestConversionsAPITargeted.test_sanitize_filename": {"executed_lines": [206, 207, 208, 209, 210, 211], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "TestConversionsAPITargeted.test_validate_file_type": {"executed_lines": [214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 16, 17, 19, 20, 24, 25, 28, 29, 32, 33, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 99, 100, 101, 128, 129, 130, 156, 157, 158, 167, 168, 169, 170, 188, 189, 190, 205, 213], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionsAPITargeted": {"executed_lines": [65, 66, 68, 69, 71, 72, 73, 74, 75, 78, 81, 82, 83, 84, 89, 90, 92, 93, 94, 96, 97, 102, 104, 105, 117, 118, 120, 122, 123, 124, 125, 126, 131, 133, 134, 135, 147, 149, 151, 152, 153, 154, 159, 160, 162, 163, 165, 171, 172, 174, 175, 176, 177, 178, 179, 181, 183, 184, 185, 186, 191, 193, 194, 195, 196, 197, 198, 200, 202, 206, 207, 208, 209, 210, 211, 214, 215, 216, 217, 218, 219, 220], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 16, 17, 19, 20, 21, 22, 24, 25, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 99, 100, 101, 128, 129, 130, 156, 157, 158, 167, 168, 169, 170, 188, 189, 190, 205, 213], "summary": {"covered_lines": 56, "num_statements": 58, "percent_covered": 96.55172413793103, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "97"}, "missing_lines": [26, 30], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_email_verification.py": {"executed_lines": [5, 6, 7, 10, 13, 15, 17, 21, 22, 24, 26, 27, 29, 30, 33, 36, 38, 40, 41, 43, 45, 46, 48, 49, 52, 55, 57, 59, 63, 64, 66, 68, 70, 73], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestRegisterWithVerificationRequest.test_valid_registration_request": {"executed_lines": [15, 17, 21, 22], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestRegisterWithVerificationRequest.test_invalid_email_format": {"executed_lines": [26, 27, 29, 30], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestResendVerificationRequest.test_valid_resend_request": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestResendVerificationRequest.test_invalid_resend_email": {"executed_lines": [45, 46, 48, 49], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestResponseModels.test_registration_response": {"executed_lines": [57, 59, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestResponseModels.test_resend_response": {"executed_lines": [68, 70, 73], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "": {"executed_lines": [5, 6, 7, 10, 13, 24, 33, 36, 43, 52, 55, 66], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRegisterWithVerificationRequest": {"executed_lines": [15, 17, 21, 22, 26, 27, 29, 30], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TestResendVerificationRequest": {"executed_lines": [38, 40, 41, 45, 46, 48, 49], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestResponseModels": {"executed_lines": [57, 59, 63, 64, 68, 70, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "": {"executed_lines": [5, 6, 7, 10, 13, 24, 33, 36, 43, 52, 55, 66], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_embeddings_logic.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 34, 35, 36, 45, 46, 47, 48, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 66, 67, 76, 77, 78, 87, 88, 89, 90, 92, 94, 95, 96, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 116, 117, 118, 119, 120, 122, 124, 125, 126, 134, 136, 139, 140, 141, 145, 146, 148, 151, 152, 155, 156, 158, 159, 160, 168, 169, 170, 172, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 192, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 206, 208, 209, 210, 212, 213, 214, 216, 218, 220, 221, 222, 223, 224, 232, 233, 235, 236, 237, 239, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 255, 257, 261, 262, 264, 265, 267, 269, 270, 271, 281, 282, 283, 284, 285, 287, 290, 291, 292, 293, 295, 296, 298, 299, 300, 302, 304, 305, 306, 307, 310, 311, 314, 315, 317, 318, 320, 322, 323, 324, 334, 335, 336, 338, 340, 342, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 359, 361, 365, 366, 367, 369, 370, 372, 373, 376, 377, 378, 379, 380, 381, 382, 383, 385, 386, 388, 389, 390, 400, 401, 402, 403, 405, 407, 410, 411, 412, 415, 424, 425, 426, 429, 430, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 446, 447, 448, 449, 450, 451, 452, 454, 455, 457, 458, 459, 469, 470, 471, 472], "summary": {"covered_lines": 268, "num_statements": 268, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestEmbeddingsAPILogic.test_create_embedding_new": {"executed_lines": [19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 34, 35, 36, 45, 46, 47, 48, 49], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestEmbeddingsAPILogic.test_create_embedding_existing": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 66, 67, 76, 77, 78, 87, 88, 89, 90], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestEmbeddingsAPILogic.test_search_similar_embeddings_success": {"executed_lines": [94, 95, 96, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 116, 117, 118, 119, 120], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestEmbeddingsAPILogic.test_search_similar_embeddings_empty_query": {"executed_lines": [124, 125, 126, 134], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestEmbeddingsAPILogic.test_generate_embeddings_success": {"executed_lines": [139, 140, 141, 145, 146, 148, 151, 152, 155, 156, 158, 159, 160, 168, 169, 170], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestEmbeddingsAPILogic.test_get_document_success": {"executed_lines": [174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 192, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "TestEmbeddingsAPILogic.test_get_document_not_found": {"executed_lines": [208, 209, 210, 212, 213, 214, 216], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "TestEmbeddingsAPILogic.test_get_document_chunks_success": {"executed_lines": [220, 221, 222, 223, 224, 232, 233, 235, 236, 237, 239, 240, 241, 242], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "TestEmbeddingsAPILogic.test_hybrid_search_vector_only": {"executed_lines": [246, 247, 248, 249, 250, 251, 252, 255, 257, 261, 262, 264, 265, 267, 269, 270, 271, 281, 282, 283, 284, 285], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestEmbeddingsAPILogic.test_index_document_success": {"executed_lines": [290, 291, 292, 293, 295, 296, 298, 299, 300, 302, 304, 305, 306, 307, 310, 311, 314, 315, 317, 318, 320, 322, 323, 324, 334, 335, 336, 338], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestEmbeddingsAPILogic.test_hybrid_search_full": {"executed_lines": [342, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 359, 361, 365, 366, 367, 369, 370, 372, 373, 376, 377, 378, 379, 380, 381, 382, 383, 385, 386, 388, 389, 390, 400, 401, 402, 403], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestEmbeddingsAPILogic.test_search_enhanced_success": {"executed_lines": [407, 410, 411, 412, 415, 424, 425, 426, 429, 430, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 446, 447, 448, 449, 450, 451, 452, 454, 455, 457, 458, 459, 469, 470, 471, 472], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 51, 92, 122, 136, 172, 206, 218, 244, 287, 340, 405], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestEmbeddingsAPILogic": {"executed_lines": [19, 20, 21, 22, 23, 24, 25, 26, 28, 31, 32, 34, 35, 36, 45, 46, 47, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 66, 67, 76, 77, 78, 87, 88, 89, 90, 94, 95, 96, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 116, 117, 118, 119, 120, 124, 125, 126, 134, 139, 140, 141, 145, 146, 148, 151, 152, 155, 156, 158, 159, 160, 168, 169, 170, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 192, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 208, 209, 210, 212, 213, 214, 216, 220, 221, 222, 223, 224, 232, 233, 235, 236, 237, 239, 240, 241, 242, 246, 247, 248, 249, 250, 251, 252, 255, 257, 261, 262, 264, 265, 267, 269, 270, 271, 281, 282, 283, 284, 285, 290, 291, 292, 293, 295, 296, 298, 299, 300, 302, 304, 305, 306, 307, 310, 311, 314, 315, 317, 318, 320, 322, 323, 324, 334, 335, 336, 338, 342, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 359, 361, 365, 366, 367, 369, 370, 372, 373, 376, 377, 378, 379, 380, 381, 382, 383, 385, 386, 388, 389, 390, 400, 401, 402, 403, 407, 410, 411, 412, 415, 424, 425, 426, 429, 430, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 446, 447, 448, 449, 450, 451, 452, 454, 455, 457, 458, 459, 469, 470, 471, 472], "summary": {"covered_lines": 244, "num_statements": 244, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 51, 92, 122, 136, 172, 206, 218, 244, 287, 340, 405], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_embeddings_real.py": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 38, 40, 41, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 56, 62, 64, 65, 67, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 80, 85, 87, 88, 89, 91, 92, 96, 97, 98, 100, 101, 102, 103, 106, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 149, 150, 151, 152, 154, 160, 162, 163, 164], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"client": {"executed_lines": [13, 14], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestEmbeddingsAPIReal.test_create_embedding_new": {"executed_lines": [21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 38, 40, 41], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestEmbeddingsAPIReal.test_create_embedding_existing": {"executed_lines": [46, 48, 49, 50, 51, 52, 53, 54, 56, 62, 64, 65], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestEmbeddingsAPIReal.test_search_embeddings_success": {"executed_lines": [70, 72, 73, 74, 75, 76, 77, 78, 80, 85, 87, 88, 89], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestEmbeddingsAPIReal.test_search_embeddings_empty_query": {"executed_lines": [92, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestEmbeddingsAPIReal.test_index_document_success": {"executed_lines": [103, 106, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 149, 150, 151, 152, 154, 160, 162, 163, 164], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 11, 12, 16, 18, 19, 20, 43, 44, 45, 67, 68, 69, 91, 100, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestEmbeddingsAPIReal": {"executed_lines": [21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 38, 40, 41, 46, 48, 49, 50, 51, 52, 53, 54, 56, 62, 64, 65, 70, 72, 73, 74, 75, 76, 77, 78, 80, 85, 87, 88, 89, 92, 96, 97, 98, 103, 106, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 149, 150, 151, 152, 154, 160, 162, 163, 164], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 16, 18, 19, 20, 43, 44, 45, 67, 68, 69, 91, 100, 101, 102], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_embeddings_targeted.py": {"executed_lines": [5, 6, 7, 10, 13, 15, 16, 18, 22, 24, 25, 27, 28, 32, 34, 35, 41, 42, 46, 48, 49, 51, 52, 53, 58, 61, 63, 64, 66, 69, 70, 74, 76, 77, 79, 80, 85, 88, 90, 91, 93, 98, 99, 103, 105, 106, 108, 113, 116, 118, 119, 122, 129, 132, 134, 135, 137, 138, 142, 144, 145, 147, 148], "summary": {"covered_lines": 63, "num_statements": 87, "percent_covered": 72.41379310344827, "percent_covered_display": "72", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 72.41379310344827, "percent_statements_covered_display": "72"}, "missing_lines": [19, 20, 29, 30, 43, 44, 54, 55, 71, 72, 81, 82, 100, 101, 109, 110, 123, 124, 125, 126, 139, 140, 149, 150], "excluded_lines": [], "functions": {"TestEmbeddingsModule.test_embeddings_module_imports": {"executed_lines": [15, 16, 18], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [19, 20], "excluded_lines": [], "start_line": 13}, "TestEmbeddingsModule.test_embeddings_router_exists": {"executed_lines": [24, 25, 27, 28], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [29, 30], "excluded_lines": [], "start_line": 22}, "TestEmbeddingsModule.test_embeddings_models_import": {"executed_lines": [34, 35, 41, 42], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [43, 44], "excluded_lines": [], "start_line": 32}, "TestEmbeddingsModule.test_embeddings_crud_imports": {"executed_lines": [48, 49, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [54, 55], "excluded_lines": [], "start_line": 46}, "TestEmbeddingsModels.test_document_embedding_create": {"executed_lines": [63, 64, 66, 69, 70], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [71, 72], "excluded_lines": [], "start_line": 61}, "TestEmbeddingsModels.test_embedding_search_query": {"executed_lines": [76, 77, 79, 80], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [81, 82], "excluded_lines": [], "start_line": 74}, "TestEmbeddingsCRUD.test_crud_functions_exist": {"executed_lines": [90, 91, 93, 98, 99], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [100, 101], "excluded_lines": [], "start_line": 88}, "TestEmbeddingsCRUD.test_crud_models_exist": {"executed_lines": [105, 106, 108], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [109, 110], "excluded_lines": [], "start_line": 103}, "TestEmbeddingsHelpers.test_get_ai_engine_indexing": {"executed_lines": [118, 119, 122], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [123, 124, 125, 126], "excluded_lines": [], "start_line": 116}, "TestEmbeddingsEdgeCases.test_empty_embedding_list": {"executed_lines": [134, 135, 137, 138], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [139, 140], "excluded_lines": [], "start_line": 132}, "TestEmbeddingsEdgeCases.test_large_limit": {"executed_lines": [144, 145, 147, 148], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [149, 150], "excluded_lines": [], "start_line": 142}, "": {"executed_lines": [5, 6, 7, 10, 13, 22, 32, 46, 58, 61, 74, 85, 88, 103, 113, 116, 129, 132, 142], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestEmbeddingsModule": {"executed_lines": [15, 16, 18, 24, 25, 27, 28, 34, 35, 41, 42, 48, 49, 51, 52, 53], "summary": {"covered_lines": 16, "num_statements": 24, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [19, 20, 29, 30, 43, 44, 54, 55], "excluded_lines": [], "start_line": 10}, "TestEmbeddingsModels": {"executed_lines": [63, 64, 66, 69, 70, 76, 77, 79, 80], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [71, 72, 81, 82], "excluded_lines": [], "start_line": 58}, "TestEmbeddingsCRUD": {"executed_lines": [90, 91, 93, 98, 99, 105, 106, 108], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [100, 101, 109, 110], "excluded_lines": [], "start_line": 85}, "TestEmbeddingsHelpers": {"executed_lines": [118, 119, 122], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [123, 124, 125, 126], "excluded_lines": [], "start_line": 113}, "TestEmbeddingsEdgeCases": {"executed_lines": [134, 135, 137, 138, 144, 145, 147, 148], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [139, 140, 149, 150], "excluded_lines": [], "start_line": 129}, "": {"executed_lines": [5, 6, 7, 10, 13, 22, 32, 46, 58, 61, 74, 85, 88, 103, 113, 116, 129, 132, 142], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_experiments_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 28, 29, 31, 33, 35, 37, 40, 43, 45, 50, 52, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 72, 76, 78, 79, 80, 83, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 122, 124, 125, 126, 129, 132, 134, 136, 138, 140, 142, 143, 144, 146, 148, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 166, 167, 169, 170, 171, 174, 177, 179, 181, 183, 185, 187, 189, 190, 192, 195, 196, 197, 199, 201, 203, 205, 206, 208, 211, 212, 213, 215, 217, 219, 221, 222, 223, 224, 226, 228, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 254, 255, 256, 258, 261, 264, 266, 268, 270, 272, 274, 275, 276, 278, 280, 282, 284, 285, 287, 293, 294, 296, 299, 302, 304, 306, 308, 310, 312, 314, 315, 316, 317, 319, 321, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 346, 347, 348, 350, 353, 356, 358, 360, 362, 364, 366, 367, 368, 370, 372, 374, 376, 377, 379, 380, 381, 382, 383, 384, 385, 386, 387, 389, 400, 401, 403, 404, 405, 408, 411, 413, 415, 417, 419, 421, 422, 424, 430, 431, 432, 434, 437, 440, 442, 444, 445, 447, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 472, 473, 474, 475, 477, 480, 483, 485, 487, 488, 490, 491, 492, 494, 505, 506, 507, 509, 512, 515, 517, 522, 524, 526, 528, 534, 536, 538, 540, 546, 548, 550, 552, 554, 557, 561, 563, 566, 569, 571, 573, 575, 577, 579, 581, 583, 585, 588, 591, 593, 595, 601, 602, 604, 606, 608, 613, 614, 616, 618, 620, 626, 627, 629, 631, 633, 641, 642, 645], "summary": {"covered_lines": 323, "num_statements": 324, "percent_covered": 99.69135802469135, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.69135802469135, "percent_statements_covered_display": "99"}, "missing_lines": [646], "excluded_lines": [], "functions": {"mock_db": {"executed_lines": [24, 25], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "client": {"executed_lines": [31, 33, 35, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestCreateExperiment.test_create_experiment_invalid_traffic_allocation": {"executed_lines": [45, 50, 52], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestCreateExperiment.test_create_experiment_success": {"executed_lines": [56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 72, 76, 78, 79, 80], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestListExperiments.test_list_experiments_invalid_skip": {"executed_lines": [88, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestListExperiments.test_list_experiments_invalid_limit": {"executed_lines": [94, 96], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestListExperiments.test_list_experiments_limit_too_high": {"executed_lines": [100, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestListExperiments.test_list_experiments_success": {"executed_lines": [106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 122, 124, 125, 126], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestGetExperiment.test_get_experiment_invalid_id": {"executed_lines": [134, 136], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestGetExperiment.test_get_experiment_not_found": {"executed_lines": [140, 142, 143, 144, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestGetExperiment.test_get_experiment_success": {"executed_lines": [150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 166, 167, 169, 170, 171], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestUpdateExperiment.test_update_experiment_invalid_id": {"executed_lines": [179, 181, 183], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestUpdateExperiment.test_update_experiment_invalid_status": {"executed_lines": [187, 189, 190, 192, 195, 196, 197, 199], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185}, "TestUpdateExperiment.test_update_experiment_invalid_traffic": {"executed_lines": [203, 205, 206, 208, 211, 212, 213, 215], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestUpdateExperiment.test_update_experiment_not_found": {"executed_lines": [219, 221, 222, 223, 224, 226], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestUpdateExperiment.test_update_experiment_success": {"executed_lines": [230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 254, 255, 256, 258], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "TestDeleteExperiment.test_delete_experiment_invalid_id": {"executed_lines": [266, 268], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestDeleteExperiment.test_delete_experiment_not_found": {"executed_lines": [272, 274, 275, 276, 278], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "TestDeleteExperiment.test_delete_experiment_success": {"executed_lines": [282, 284, 285, 287, 293, 294, 296], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestCreateExperimentVariant.test_create_variant_invalid_experiment_id": {"executed_lines": [304, 306, 308], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "TestCreateExperimentVariant.test_create_variant_experiment_not_found": {"executed_lines": [312, 314, 315, 316, 317, 319], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestCreateExperimentVariant.test_create_variant_success": {"executed_lines": [323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 346, 347, 348, 350], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestListExperimentVariants.test_list_variants_invalid_experiment_id": {"executed_lines": [358, 360], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "TestListExperimentVariants.test_list_variants_experiment_not_found": {"executed_lines": [364, 366, 367, 368, 370], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestListExperimentVariants.test_list_variants_success": {"executed_lines": [374, 376, 377, 379, 380, 381, 382, 383, 384, 385, 386, 387, 389, 400, 401, 403, 404, 405], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372}, "TestGetExperimentVariant.test_get_variant_invalid_ids": {"executed_lines": [413, 415], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "TestGetExperimentVariant.test_get_variant_not_found": {"executed_lines": [419, 421, 422, 424, 430, 431, 432, 434], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 417}, "TestUpdateExperimentVariant.test_update_variant_success": {"executed_lines": [442, 444, 445, 447, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 472, 473, 474, 475, 477], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440}, "TestDeleteExperimentVariant.test_delete_variant_success": {"executed_lines": [485, 487, 488, 490, 491, 492, 494, 505, 506, 507, 509], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 483}, "TestCreateExperimentResult.test_create_result_invalid_ids": {"executed_lines": [517, 522, 524], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515}, "TestCreateExperimentResult.test_create_result_invalid_quality": {"executed_lines": [528, 534, 536], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526}, "TestCreateExperimentResult.test_create_result_invalid_feedback_score": {"executed_lines": [540, 546, 548], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 538}, "TestCreateExperimentResult.test_create_result_variant_not_found": {"executed_lines": [552, 554, 557, 561, 563], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550}, "TestListExperimentResults.test_list_results_invalid_skip": {"executed_lines": [571, 573], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 569}, "TestListExperimentResults.test_list_results_invalid_limit": {"executed_lines": [577, 579], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 575}, "TestListExperimentResults.test_list_results_invalid_uuid": {"executed_lines": [583, 585], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 581}, "TestExperimentModels.test_experiment_create": {"executed_lines": [593, 595, 601, 602], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591}, "TestExperimentModels.test_experiment_update": {"executed_lines": [606, 608, 613, 614], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 604}, "TestExperimentModels.test_variant_create": {"executed_lines": [618, 620, 626, 627], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 616}, "TestExperimentModels.test_result_create": {"executed_lines": [631, 633, 641, 642], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 28, 29, 40, 43, 54, 83, 86, 92, 98, 104, 129, 132, 138, 148, 174, 177, 185, 201, 217, 228, 261, 264, 270, 280, 299, 302, 310, 321, 353, 356, 362, 372, 408, 411, 417, 437, 440, 480, 483, 512, 515, 526, 538, 550, 566, 569, 575, 581, 588, 591, 604, 616, 629, 645], "summary": {"covered_lines": 65, "num_statements": 66, "percent_covered": 98.48484848484848, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.48484848484848, "percent_statements_covered_display": "98"}, "missing_lines": [646], "excluded_lines": [], "start_line": 1}}, "classes": {"TestCreateExperiment": {"executed_lines": [45, 50, 52, 56, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 69, 72, 76, 78, 79, 80], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestListExperiments": {"executed_lines": [88, 90, 94, 96, 100, 102, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 122, 124, 125, 126], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestGetExperiment": {"executed_lines": [134, 136, 140, 142, 143, 144, 146, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 166, 167, 169, 170, 171], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "TestUpdateExperiment": {"executed_lines": [179, 181, 183, 187, 189, 190, 192, 195, 196, 197, 199, 203, 205, 206, 208, 211, 212, 213, 215, 219, 221, 222, 223, 224, 226, 230, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 246, 254, 255, 256, 258], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestDeleteExperiment": {"executed_lines": [266, 268, 272, 274, 275, 276, 278, 282, 284, 285, 287, 293, 294, 296], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "TestCreateExperimentVariant": {"executed_lines": [304, 306, 308, 312, 314, 315, 316, 317, 319, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 346, 347, 348, 350], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestListExperimentVariants": {"executed_lines": [358, 360, 364, 366, 367, 368, 370, 374, 376, 377, 379, 380, 381, 382, 383, 384, 385, 386, 387, 389, 400, 401, 403, 404, 405], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 353}, "TestGetExperimentVariant": {"executed_lines": [413, 415, 419, 421, 422, 424, 430, 431, 432, 434], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408}, "TestUpdateExperimentVariant": {"executed_lines": [442, 444, 445, 447, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 472, 473, 474, 475, 477], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 437}, "TestDeleteExperimentVariant": {"executed_lines": [485, 487, 488, 490, 491, 492, 494, 505, 506, 507, 509], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480}, "TestCreateExperimentResult": {"executed_lines": [517, 522, 524, 528, 534, 536, 540, 546, 548, 552, 554, 557, 561, 563], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 512}, "TestListExperimentResults": {"executed_lines": [571, 573, 577, 579, 583, 585], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566}, "TestExperimentModels": {"executed_lines": [593, 595, 601, 602, 606, 608, 613, 614, 618, 620, 626, 627, 631, 633, 641, 642], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 588}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 28, 29, 31, 33, 35, 37, 40, 43, 54, 83, 86, 92, 98, 104, 129, 132, 138, 148, 174, 177, 185, 201, 217, 228, 261, 264, 270, 280, 299, 302, 310, 321, 353, 356, 362, 372, 408, 411, 417, 437, 440, 480, 483, 512, 515, 526, 538, 550, 566, 569, 575, 581, 588, 591, 604, 616, 629, 645], "summary": {"covered_lines": 71, "num_statements": 72, "percent_covered": 98.61111111111111, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.61111111111111, "percent_statements_covered_display": "99"}, "missing_lines": [646], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_feedback_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 26, 27, 28, 31, 32, 34, 36, 38, 40, 43, 46, 48, 53, 55, 57, 59, 61, 62, 64, 65, 70, 72, 74, 76, 78, 79, 81, 82, 88, 90, 92, 94, 96, 97, 102, 104, 106, 108, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 136, 141, 143, 146, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 172, 173, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, 189, 195, 197, 198, 199, 200, 203, 206, 208, 209, 211, 214, 217, 219, 220, 222, 224, 226, 227, 229, 232, 235, 237, 239, 241, 243, 245, 247, 249, 252, 255, 257, 263, 265, 267, 269, 271, 272, 278, 280, 282, 284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 301, 302, 303, 309, 311, 314, 317, 319, 321, 323, 325, 327, 329, 331, 333, 335, 337, 339, 342, 345, 347, 349, 351, 354, 355, 356, 358, 359, 361, 364, 367, 369, 371, 376, 378, 380, 382, 383, 385, 387, 388, 393, 396, 399, 401, 403, 405, 407, 409, 410, 411, 413, 414, 416, 418, 420, 422, 423, 425, 426, 427, 429, 430, 432, 435, 438, 440, 442, 448, 449, 451, 453, 455, 466, 467, 469, 471, 473, 480, 481, 484], "summary": {"covered_lines": 237, "num_statements": 238, "percent_covered": 99.5798319327731, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.5798319327731, "percent_statements_covered_display": "99"}, "missing_lines": [485], "excluded_lines": [], "functions": {"mock_db": {"executed_lines": [24, 25, 26, 27, 28], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "client": {"executed_lines": [34, 36, 38, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestSubmitFeedback.test_submit_feedback_invalid_job_id": {"executed_lines": [48, 53, 55], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestSubmitFeedback.test_submit_feedback_invalid_type": {"executed_lines": [59, 61, 62, 64, 65, 70, 72], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestSubmitFeedback.test_submit_feedback_invalid_rating": {"executed_lines": [76, 78, 79, 81, 82, 88, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestSubmitFeedback.test_submit_feedback_job_not_found": {"executed_lines": [94, 96, 97, 102, 104], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestSubmitFeedback.test_submit_feedback_success": {"executed_lines": [108, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 136, 141, 143], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestGetTrainingData.test_training_data_invalid_skip": {"executed_lines": [151, 153], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "TestGetTrainingData.test_training_data_invalid_limit": {"executed_lines": [157, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestGetTrainingData.test_training_data_limit_too_high": {"executed_lines": [163, 165], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestGetTrainingData.test_training_data_success": {"executed_lines": [169, 171, 172, 173, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, 189, 195, 197, 198, 199, 200], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestTriggerRLTraining.test_trigger_training_import_error": {"executed_lines": [208, 209, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "TestAgentPerformance.test_get_agent_performance_import_error": {"executed_lines": [219, 220, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestAgentPerformance.test_get_specific_agent_invalid_type": {"executed_lines": [226, 227, 229], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestCompareAgentPerformance.test_compare_agents_too_few": {"executed_lines": [237, 239, 241], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235}, "TestCompareAgentPerformance.test_compare_agents_invalid_type": {"executed_lines": [245, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243}, "TestSubmitCorrection.test_submit_correction_invalid_job_id": {"executed_lines": [257, 263, 265], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestSubmitCorrection.test_submit_correction_job_not_found": {"executed_lines": [269, 271, 272, 278, 280], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestSubmitCorrection.test_submit_correction_success": {"executed_lines": [284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 301, 302, 303, 309, 311], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestListCorrections.test_list_corrections_invalid_limit": {"executed_lines": [319, 321], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestListCorrections.test_list_corrections_negative_offset": {"executed_lines": [325, 327], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestListCorrections.test_list_corrections_invalid_status": {"executed_lines": [331, 333], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestListCorrections.test_list_corrections_invalid_job_id": {"executed_lines": [337, 339], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestGetCorrection.test_get_correction_invalid_id": {"executed_lines": [347, 349], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345}, "TestGetCorrection.test_get_correction_not_found": {"executed_lines": [354, 355, 356, 358, 359, 361], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestReviewCorrection.test_review_correction_invalid_status": {"executed_lines": [369, 371, 376], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestReviewCorrection.test_review_correction_not_found": {"executed_lines": [380, 382, 383, 385, 387, 388, 393], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "TestApplyCorrection.test_apply_correction_invalid_id": {"executed_lines": [401, 403], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399}, "TestApplyCorrection.test_apply_correction_not_found": {"executed_lines": [407, 409, 410, 411, 413, 414, 416], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "TestApplyCorrection.test_apply_correction_not_approved": {"executed_lines": [420, 422, 423, 425, 426, 427, 429, 430, 432], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418}, "TestFeedbackModels.test_feedback_request_valid": {"executed_lines": [440, 442, 448, 449], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438}, "TestFeedbackModels.test_feedback_request_with_ratings": {"executed_lines": [453, 455, 466, 467], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451}, "TestFeedbackModels.test_correction_submission_request": {"executed_lines": [471, 473, 480, 481], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 469}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 31, 32, 43, 46, 57, 74, 92, 106, 146, 149, 155, 161, 167, 203, 206, 214, 217, 224, 232, 235, 243, 252, 255, 267, 282, 314, 317, 323, 329, 335, 342, 345, 351, 364, 367, 378, 396, 399, 405, 418, 435, 438, 451, 469, 484], "summary": {"covered_lines": 56, "num_statements": 57, "percent_covered": 98.24561403508773, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.24561403508773, "percent_statements_covered_display": "98"}, "missing_lines": [485], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSubmitFeedback": {"executed_lines": [48, 53, 55, 59, 61, 62, 64, 65, 70, 72, 76, 78, 79, 81, 82, 88, 90, 94, 96, 97, 102, 104, 108, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 136, 141, 143], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestGetTrainingData": {"executed_lines": [151, 153, 157, 159, 163, 165, 169, 171, 172, 173, 174, 175, 176, 177, 178, 180, 181, 182, 183, 184, 185, 186, 187, 189, 195, 197, 198, 199, 200], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146}, "TestTriggerRLTraining": {"executed_lines": [208, 209, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestAgentPerformance": {"executed_lines": [219, 220, 222, 226, 227, 229], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "TestCompareAgentPerformance": {"executed_lines": [237, 239, 241, 245, 247, 249], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "TestSubmitCorrection": {"executed_lines": [257, 263, 265, 269, 271, 272, 278, 280, 284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 301, 302, 303, 309, 311], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "TestListCorrections": {"executed_lines": [319, 321, 325, 327, 331, 333, 337, 339], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "TestGetCorrection": {"executed_lines": [347, 349, 354, 355, 356, 358, 359, 361], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestReviewCorrection": {"executed_lines": [369, 371, 376, 380, 382, 383, 385, 387, 388, 393], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 364}, "TestApplyCorrection": {"executed_lines": [401, 403, 407, 409, 410, 411, 413, 414, 416, 420, 422, 423, 425, 426, 427, 429, 430, 432], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396}, "TestFeedbackModels": {"executed_lines": [440, 442, 448, 449, 453, 455, 466, 467, 471, 473, 480, 481], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 26, 27, 28, 31, 32, 34, 36, 38, 40, 43, 46, 57, 74, 92, 106, 146, 149, 155, 161, 167, 203, 206, 214, 217, 224, 232, 235, 243, 252, 255, 267, 282, 314, 317, 323, 329, 335, 342, 345, 351, 364, 367, 378, 396, 399, 405, 418, 435, 438, 451, 469, 484], "summary": {"covered_lines": 65, "num_statements": 66, "percent_covered": 98.48484848484848, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.48484848484848, "percent_statements_covered_display": "98"}, "missing_lines": [485], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_jobs.py": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 32, 33, 35, 37, 38, 41, 42, 45, 46, 48, 50, 51, 52, 54, 64, 66, 67, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 86, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 113, 115, 116, 118, 119, 121, 123, 124, 125, 126, 127, 128, 129, 130, 132, 134, 135, 137, 138, 139, 140, 141, 142, 144, 146], "summary": {"covered_lines": 103, "num_statements": 103, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_manager": {"executed_lines": [14], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "client": {"executed_lines": [18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 32, 35, 37, 38, 41, 42, 45, 46, 48], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "client.mock_execute": {"executed_lines": [33], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestJobsAPI.test_create_job": {"executed_lines": [52, 54, 64, 66, 67, 68], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestJobsAPI.test_list_jobs": {"executed_lines": [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 86, 88, 89, 90, 91], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestJobsAPI.test_get_job_success": {"executed_lines": [94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 113], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestJobsAPI.test_get_job_not_found": {"executed_lines": [116, 118, 119, 121], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestJobsAPI.test_cancel_job_success": {"executed_lines": [124, 125, 126, 127, 128, 129, 130, 132, 134, 135], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TestJobsAPI.test_cancel_job_forbidden": {"executed_lines": [138, 139, 140, 141, 142, 144, 146], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 16, 17, 50, 51, 70, 93, 115, 123, 137], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestJobsAPI": {"executed_lines": [52, 54, 64, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 86, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 113, 116, 118, 119, 121, 124, 125, 126, 127, 128, 129, 130, 132, 134, 135, 138, 139, 140, 141, 142, 144, 146], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 32, 33, 35, 37, 38, 41, 42, 45, 46, 48, 50, 51, 70, 93, 115, 123, 137], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_knowledge_simple.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 26, 27, 28, 31, 32, 34, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 51, 52, 53, 56, 57, 60, 62, 64, 67, 70, 72, 74, 76, 78, 82, 85, 88, 90, 91, 92, 102, 104, 108, 110, 112, 113, 114, 115, 117, 122, 125, 128, 130, 131, 132, 135, 136, 138, 143, 146, 149, 151, 152, 153, 156, 157, 159, 167], "summary": {"covered_lines": 79, "num_statements": 79, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_db": {"executed_lines": [24, 25, 26, 27, 28], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "client": {"executed_lines": [34, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 51, 52, 53, 56, 57, 60, 62, 64], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestPatternLibraryEndpoint.test_get_pattern_library": {"executed_lines": [72, 74], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestPatternLibraryEndpoint.test_get_pattern_library_with_category": {"executed_lines": [78, 82], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestRelatedChunksEndpoint.test_get_related_chunks": {"executed_lines": [90, 91, 92, 102, 104, 108], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestRelatedChunksEndpoint.test_get_related_chunks_with_type": {"executed_lines": [112, 113, 114, 115, 117, 122], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestChunkAnalysisEndpoint.test_analyze_chunk_relationships": {"executed_lines": [130, 131, 132, 135, 136, 138, 143], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestConceptGraphEndpoint.test_build_concept_graph": {"executed_lines": [151, 152, 153, 156, 157, 159, 167], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 31, 32, 67, 70, 76, 85, 88, 110, 125, 128, 146, 149], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestPatternLibraryEndpoint": {"executed_lines": [72, 74, 78, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestRelatedChunksEndpoint": {"executed_lines": [90, 91, 92, 102, 104, 108, 112, 113, 114, 115, 117, 122], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestChunkAnalysisEndpoint": {"executed_lines": [130, 131, 132, 135, 136, 138, 143], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestConceptGraphEndpoint": {"executed_lines": [151, 152, 153, 156, 157, 159, 167], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 18, 21, 22, 24, 25, 26, 27, 28, 31, 32, 34, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 48, 49, 51, 52, 53, 56, 57, 60, 62, 64, 67, 70, 76, 85, 88, 110, 125, 128, 146, 149], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_misc_coverage.py": {"executed_lines": [9, 10, 13, 16, 18, 19, 21, 31, 32, 35, 37, 38, 40, 44, 46, 47, 49, 50, 55, 58, 60, 61, 63, 73, 74, 77, 79, 80, 82, 86, 88, 89, 91, 92, 97, 100, 102, 103, 105, 113, 114, 117, 119, 120, 122, 126, 128, 129, 131, 132, 137, 140, 142, 143, 145, 153, 154, 157, 159, 160, 162, 166, 168, 169, 171, 172, 176, 178, 179, 181, 190, 193, 195, 196, 198, 199, 200, 203, 204, 207, 209, 210, 212, 223, 226, 228, 229, 231, 232, 233, 236, 237, 240, 242, 243, 245, 256, 259, 261, 262, 264, 265, 266, 269, 270, 273, 275, 276, 278, 289, 292, 294, 295, 297, 303, 304, 307, 308, 311, 313, 314, 316, 324, 326, 327, 329], "summary": {"covered_lines": 126, "num_statements": 206, "percent_covered": 61.16504854368932, "percent_covered_display": "61", "missing_lines": 80, "excluded_lines": 0, "percent_statements_covered": 61.16504854368932, "percent_statements_covered_display": "61"}, "missing_lines": [22, 25, 28, 29, 33, 41, 42, 51, 52, 64, 67, 70, 71, 75, 83, 84, 93, 94, 106, 109, 110, 111, 115, 123, 124, 133, 134, 146, 149, 150, 151, 155, 163, 164, 173, 174, 182, 183, 184, 185, 186, 187, 201, 205, 213, 216, 217, 218, 219, 220, 234, 238, 246, 249, 250, 251, 252, 253, 267, 271, 279, 282, 283, 284, 285, 286, 305, 309, 317, 318, 319, 320, 321, 322, 330, 331, 332, 333, 334, 335], "excluded_lines": [], "functions": {"TestBehaviorTemplates.test_list_templates": {"executed_lines": [18, 19, 21, 31, 32], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [22, 25, 28, 29, 33], "excluded_lines": [], "start_line": 16}, "TestBehaviorTemplates.test_behavior_templates_module_imports": {"executed_lines": [37, 38, 40], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [41, 42], "excluded_lines": [], "start_line": 35}, "TestBehaviorTemplates.test_behavior_templates_router_exists": {"executed_lines": [46, 47, 49, 50], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [51, 52], "excluded_lines": [], "start_line": 44}, "TestBehaviorFiles.test_list_behavior_files": {"executed_lines": [60, 61, 63, 73, 74], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [64, 67, 70, 71, 75], "excluded_lines": [], "start_line": 58}, "TestBehaviorFiles.test_behavior_files_module_imports": {"executed_lines": [79, 80, 82], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [83, 84], "excluded_lines": [], "start_line": 77}, "TestBehaviorFiles.test_behavior_files_router_exists": {"executed_lines": [88, 89, 91, 92], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [93, 94], "excluded_lines": [], "start_line": 86}, "TestBehaviorExport.test_export_behavior_pack": {"executed_lines": [102, 103, 105, 113, 114], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [106, 109, 110, 111, 115], "excluded_lines": [], "start_line": 100}, "TestBehaviorExport.test_behavior_export_module_imports": {"executed_lines": [119, 120, 122], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [123, 124], "excluded_lines": [], "start_line": 117}, "TestBehaviorExport.test_behavior_export_router_exists": {"executed_lines": [128, 129, 131, 132], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [133, 134], "excluded_lines": [], "start_line": 126}, "TestAnalytics.test_get_analytics_overview": {"executed_lines": [142, 143, 145, 153, 154], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [146, 149, 150, 151, 155], "excluded_lines": [], "start_line": 140}, "TestAnalytics.test_analytics_module_imports": {"executed_lines": [159, 160, 162], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [163, 164], "excluded_lines": [], "start_line": 157}, "TestAnalytics.test_analytics_router_exists": {"executed_lines": [168, 169, 171, 172], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [173, 174], "excluded_lines": [], "start_line": 166}, "TestAnalytics.test_analytics_models": {"executed_lines": [178, 179, 181], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [182, 183, 184, 185, 186, 187], "excluded_lines": [], "start_line": 176}, "TestBehaviorTemplatesAdvanced.test_template_crud_operations": {"executed_lines": [195, 196, 198, 199, 200, 203, 204], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [201, 205], "excluded_lines": [], "start_line": 193}, "TestBehaviorTemplatesAdvanced.test_template_search": {"executed_lines": [209, 210, 212], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [213, 216, 217, 218, 219, 220], "excluded_lines": [], "start_line": 207}, "TestBehaviorFilesAdvanced.test_file_crud_operations": {"executed_lines": [228, 229, 231, 232, 233, 236, 237], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [234, 238], "excluded_lines": [], "start_line": 226}, "TestBehaviorFilesAdvanced.test_file_validation": {"executed_lines": [242, 243, 245], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [246, 249, 250, 251, 252, 253], "excluded_lines": [], "start_line": 240}, "TestBehaviorExportAdvanced.test_export_operations": {"executed_lines": [261, 262, 264, 265, 266, 269, 270], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [267, 271], "excluded_lines": [], "start_line": 259}, "TestBehaviorExportAdvanced.test_export_history": {"executed_lines": [275, 276, 278], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [279, 282, 283, 284, 285, 286], "excluded_lines": [], "start_line": 273}, "TestAnalyticsAdvanced.test_analytics_functions": {"executed_lines": [294, 295, 297, 303, 304, 307, 308], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [305, 309], "excluded_lines": [], "start_line": 292}, "TestAnalyticsAdvanced.test_record_event": {"executed_lines": [313, 314, 316], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [317, 318, 319, 320, 321, 322], "excluded_lines": [], "start_line": 311}, "TestAnalyticsAdvanced.test_export_data": {"executed_lines": [326, 327, 329], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [330, 331, 332, 333, 334, 335], "excluded_lines": [], "start_line": 324}, "": {"executed_lines": [9, 10, 13, 16, 35, 44, 55, 58, 77, 86, 97, 100, 117, 126, 137, 140, 157, 166, 176, 190, 193, 207, 223, 226, 240, 256, 259, 273, 289, 292, 311, 324], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBehaviorTemplates": {"executed_lines": [18, 19, 21, 31, 32, 37, 38, 40, 46, 47, 49, 50], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [22, 25, 28, 29, 33, 41, 42, 51, 52], "excluded_lines": [], "start_line": 13}, "TestBehaviorFiles": {"executed_lines": [60, 61, 63, 73, 74, 79, 80, 82, 88, 89, 91, 92], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [64, 67, 70, 71, 75, 83, 84, 93, 94], "excluded_lines": [], "start_line": 55}, "TestBehaviorExport": {"executed_lines": [102, 103, 105, 113, 114, 119, 120, 122, 128, 129, 131, 132], "summary": {"covered_lines": 12, "num_statements": 21, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [106, 109, 110, 111, 115, 123, 124, 133, 134], "excluded_lines": [], "start_line": 97}, "TestAnalytics": {"executed_lines": [142, 143, 145, 153, 154, 159, 160, 162, 168, 169, 171, 172, 178, 179, 181], "summary": {"covered_lines": 15, "num_statements": 30, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [146, 149, 150, 151, 155, 163, 164, 173, 174, 182, 183, 184, 185, 186, 187], "excluded_lines": [], "start_line": 137}, "TestBehaviorTemplatesAdvanced": {"executed_lines": [195, 196, 198, 199, 200, 203, 204, 209, 210, 212], "summary": {"covered_lines": 10, "num_statements": 18, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [201, 205, 213, 216, 217, 218, 219, 220], "excluded_lines": [], "start_line": 190}, "TestBehaviorFilesAdvanced": {"executed_lines": [228, 229, 231, 232, 233, 236, 237, 242, 243, 245], "summary": {"covered_lines": 10, "num_statements": 18, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [234, 238, 246, 249, 250, 251, 252, 253], "excluded_lines": [], "start_line": 223}, "TestBehaviorExportAdvanced": {"executed_lines": [261, 262, 264, 265, 266, 269, 270, 275, 276, 278], "summary": {"covered_lines": 10, "num_statements": 18, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [267, 271, 279, 282, 283, 284, 285, 286], "excluded_lines": [], "start_line": 256}, "TestAnalyticsAdvanced": {"executed_lines": [294, 295, 297, 303, 304, 307, 308, 313, 314, 316, 326, 327, 329], "summary": {"covered_lines": 13, "num_statements": 27, "percent_covered": 48.148148148148145, "percent_covered_display": "48", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 48.148148148148145, "percent_statements_covered_display": "48"}, "missing_lines": [305, 309, 317, 318, 319, 320, 321, 322, 330, 331, 332, 333, 334, 335], "excluded_lines": [], "start_line": 289}, "": {"executed_lines": [9, 10, 13, 16, 35, 44, 55, 58, 77, 86, 97, 100, 117, 126, 137, 140, 157, 166, 176, 190, 193, 207, 223, 226, 240, 256, 259, 273, 289, 292, 311, 324], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_mod_imports_targeted.py": {"executed_lines": [7, 8, 9, 10, 12, 26, 27, 28, 31, 34, 36, 37, 38, 39, 40, 42, 44, 45, 46, 47, 49, 51, 52, 53, 54, 56, 58, 59, 60, 61, 63, 65, 66, 67, 68, 70, 72, 73, 74, 75, 77, 79, 80, 81, 82, 84, 86, 87, 88, 89, 91, 93, 94, 95, 98, 101, 103, 122, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 135, 136, 138, 140, 153, 154, 155, 156, 157, 158, 159, 161, 163, 174, 175, 176, 177, 178, 180, 182, 193, 194, 195, 196, 197, 200, 203, 205, 206, 207, 208, 209, 210, 212, 214, 215, 216, 217, 219, 220, 222, 239, 240, 241, 242, 243, 244, 246, 247, 249, 267, 268, 269, 270, 271, 272, 274, 276, 277, 279, 280, 282, 284, 287, 289, 290, 292, 307, 308, 309, 310, 312, 313, 315, 329, 330, 331, 332, 334, 335, 337, 353, 354, 355, 356, 357, 358, 360, 361, 363, 377, 378, 379, 380, 381, 383, 385, 388, 389, 390, 392, 393, 395, 397, 398, 400, 401, 403, 405, 406, 408, 410, 411, 413, 414, 416, 418, 419, 420, 421, 422, 424, 425, 426, 427, 428, 430, 431, 445, 446, 448, 449, 450, 451, 453, 454, 455, 457, 458, 460, 463, 464, 466, 467, 471, 473, 475, 476, 477, 478, 479], "summary": {"covered_lines": 219, "num_statements": 220, "percent_covered": 99.54545454545455, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.54545454545455, "percent_statements_covered_display": "99"}, "missing_lines": [461], "excluded_lines": [], "functions": {"TestParseModUrl.test_parse_curseforge_url": {"executed_lines": [36, 37, 38, 39, 40], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestParseModUrl.test_parse_curseforge_url_without_www": {"executed_lines": [44, 45, 46, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestParseModUrl.test_parse_curseforge_url_http": {"executed_lines": [51, 52, 53, 54], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestParseModUrl.test_parse_modrinth_mod_url": {"executed_lines": [58, 59, 60, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestParseModUrl.test_parse_modrinth_resourcepack_url": {"executed_lines": [65, 66, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestParseModUrl.test_parse_modrinth_plugin_url": {"executed_lines": [72, 73, 74, 75], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestParseModUrl.test_parse_modrinth_short_url": {"executed_lines": [79, 80, 81, 82], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestParseModUrl.test_parse_invalid_url": {"executed_lines": [86, 87, 88, 89], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestParseModUrl.test_parse_empty_url": {"executed_lines": [93, 94, 95], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestTransformFunctions.test_transform_curseforge_mod": {"executed_lines": [103, 122, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestTransformFunctions.test_transform_curseforge_mod_empty_data": {"executed_lines": [133, 134, 135, 136], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "TestTransformFunctions.test_transform_modrinth_mod": {"executed_lines": [140, 153, 154, 155, 156, 157, 158, 159], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestTransformFunctions.test_transform_curseforge_file": {"executed_lines": [163, 174, 175, 176, 177, 178], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestTransformFunctions.test_transform_modrinth_version": {"executed_lines": [182, 193, 194, 195, 196, 197], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestAPIEndpoints.test_parse_url_endpoint": {"executed_lines": [205, 206, 207, 208, 209, 210], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestAPIEndpoints.test_parse_url_invalid": {"executed_lines": [214, 215, 216, 217], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestAPIEndpoints.test_search_curseforge": {"executed_lines": [222, 239, 240, 241, 242, 243, 244], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 220}, "TestAPIEndpoints.test_search_modrinth": {"executed_lines": [249, 267, 268, 269, 270, 271, 272], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247}, "TestAPIEndpoints.test_search_invalid_platform": {"executed_lines": [276, 277], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestAPIEndpoints.test_search_with_filters": {"executed_lines": [282, 284, 287], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestAPIEndpoints.test_get_mod_info_curseforge": {"executed_lines": [292, 307, 308, 309, 310], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290}, "TestAPIEndpoints.test_get_mod_info_modrinth": {"executed_lines": [315, 329, 330, 331, 332], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313}, "TestAPIEndpoints.test_get_mod_files_curseforge": {"executed_lines": [337, 353, 354, 355, 356, 357, 358], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestAPIEndpoints.test_get_mod_files_modrinth": {"executed_lines": [363, 377, 378, 379, 380, 381], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 361}, "TestAPIEndpoints.test_get_mod_files_with_version_filter": {"executed_lines": [385, 388, 389, 390], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 383}, "TestAPIEndpoints.test_get_categories_curseforge": {"executed_lines": [395, 397, 398], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393}, "TestAPIEndpoints.test_get_categories_modrinth": {"executed_lines": [403, 405, 406], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestAPIEndpoints.test_get_categories_invalid_platform": {"executed_lines": [410, 411], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408}, "TestAPIEndpoints.test_get_loaders": {"executed_lines": [416, 418, 419, 420, 421, 422], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestAPIEndpoints.test_import_mod_success": {"executed_lines": [430, 431, 445, 446, 448, 449, 450, 451, 453, 454, 455, 457, 458, 460, 463, 464, 466, 467, 471], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "TestAPIEndpoints.test_import_mod_success.mock_client_cm": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [461], "excluded_lines": [], "start_line": 460}, "TestAPIEndpoints.test_import_mod_invalid_url": {"executed_lines": [475, 476, 477, 478, 479], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "": {"executed_lines": [7, 8, 9, 10, 12, 26, 27, 28, 31, 34, 42, 49, 56, 63, 70, 77, 84, 91, 98, 101, 131, 138, 161, 180, 200, 203, 212, 219, 220, 246, 247, 274, 279, 280, 289, 290, 312, 313, 334, 335, 360, 361, 383, 392, 393, 400, 401, 408, 413, 414, 424, 425, 426, 427, 428, 473], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestParseModUrl": {"executed_lines": [36, 37, 38, 39, 40, 44, 45, 46, 47, 51, 52, 53, 54, 58, 59, 60, 61, 65, 66, 67, 68, 72, 73, 74, 75, 79, 80, 81, 82, 86, 87, 88, 89, 93, 94, 95], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestTransformFunctions": {"executed_lines": [103, 122, 123, 124, 125, 126, 127, 128, 129, 133, 134, 135, 136, 140, 153, 154, 155, 156, 157, 158, 159, 163, 174, 175, 176, 177, 178, 182, 193, 194, 195, 196, 197], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestAPIEndpoints": {"executed_lines": [205, 206, 207, 208, 209, 210, 214, 215, 216, 217, 222, 239, 240, 241, 242, 243, 244, 249, 267, 268, 269, 270, 271, 272, 276, 277, 282, 284, 287, 292, 307, 308, 309, 310, 315, 329, 330, 331, 332, 337, 353, 354, 355, 356, 357, 358, 363, 377, 378, 379, 380, 381, 385, 388, 389, 390, 395, 397, 398, 403, 405, 406, 410, 411, 416, 418, 419, 420, 421, 422, 430, 431, 445, 446, 448, 449, 450, 451, 453, 454, 455, 457, 458, 460, 463, 464, 466, 467, 471, 475, 476, 477, 478, 479], "summary": {"covered_lines": 94, "num_statements": 95, "percent_covered": 98.94736842105263, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.94736842105263, "percent_statements_covered_display": "99"}, "missing_lines": [461], "excluded_lines": [], "start_line": 200}, "": {"executed_lines": [7, 8, 9, 10, 12, 26, 27, 28, 31, 34, 42, 49, 56, 63, 70, 77, 84, 91, 98, 101, 131, 138, 161, 180, 200, 203, 212, 219, 220, 246, 247, 274, 279, 280, 289, 290, 312, 313, 334, 335, 360, 361, 383, 392, 393, 400, 401, 408, 413, 414, 424, 425, 426, 427, 428, 473], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_modules_coverage.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 24, 25, 27, 28, 29, 30, 31, 33, 35, 37, 41, 42, 44, 46, 48, 50, 51, 53, 55, 57, 67, 68, 70, 72, 74, 80, 81, 83, 85, 86, 88, 99, 101, 102, 104, 108, 110, 111, 113, 117, 119, 120, 126, 130, 132, 136, 138, 140, 143, 146, 148, 149, 151, 153, 154, 156, 158, 159, 161, 163, 164, 166, 168, 169, 171, 173, 175, 178, 181, 183, 185, 187, 189, 191, 193, 201, 202, 204, 206, 208, 212, 214, 216, 218, 222, 224, 226, 228, 232, 234, 236, 238, 242, 244, 246, 248, 252, 254, 256, 260, 262, 264, 266, 268, 279, 281, 292, 294, 301, 303, 305, 307, 309, 313, 315, 317, 320, 323, 325, 327, 334, 335, 337, 339, 341, 345, 347, 349, 351, 359, 361, 363, 365, 369, 371, 373, 375, 376, 378, 379, 381, 383, 385, 392, 394, 401, 403, 410, 412, 416, 418, 422, 424, 428, 430, 434, 436, 440, 442, 444, 447, 450, 452, 456, 458, 464, 466], "summary": {"covered_lines": 175, "num_statements": 176, "percent_covered": 99.43181818181819, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.43181818181819, "percent_statements_covered_display": "99"}, "missing_lines": [377], "excluded_lines": [], "functions": {"TestTaskQueueAPI.test_priority_string_to_enum": {"executed_lines": [24, 25, 27, 28, 29, 30, 31], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestTaskQueueAPI.test_task_enqueue_request_model": {"executed_lines": [35, 37, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestTaskQueueAPI.test_task_enqueue_request_defaults": {"executed_lines": [46, 48, 50, 51], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestTaskQueueAPI.test_task_response_model": {"executed_lines": [55, 57, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestTaskQueueAPI.test_queue_stats_response_model": {"executed_lines": [72, 74, 80, 81], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestTaskQueueAPI.test_create_task_endpoint": {"executed_lines": [85, 86, 88], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestTaskQueueAPI.test_get_task_status_endpoint": {"executed_lines": [101, 102, 104], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestTaskQueueAPI.test_cancel_task_endpoint": {"executed_lines": [110, 111, 113], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestTaskQueueAPI.test_get_queue_stats_endpoint": {"executed_lines": [119, 120, 126], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestTaskQueueAPI.test_list_tasks_endpoint": {"executed_lines": [132], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestTaskQueueAPI.test_router_prefix": {"executed_lines": [138, 140], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestQueryMonitoringAPI.test_get_report_endpoint": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146}, "TestQueryMonitoringAPI.test_get_n_plus_one_endpoint": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "TestQueryMonitoringAPI.test_get_slowest_queries_endpoint": {"executed_lines": [158, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TestQueryMonitoringAPI.test_get_frequent_queries_endpoint": {"executed_lines": [163, 164], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestQueryMonitoringAPI.test_reset_monitor_endpoint": {"executed_lines": [168, 169], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestQueryMonitoringAPI.test_router_prefix": {"executed_lines": [173, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "TestVisualEditorAPI.test_editor_session_request_model": {"executed_lines": [183, 185, 187], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestVisualEditorAPI.test_editor_session_response_model": {"executed_lines": [191, 193, 201, 202], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestVisualEditorAPI.test_code_edit_request_model": {"executed_lines": [206, 208, 212], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestVisualEditorAPI.test_code_edit_response_model": {"executed_lines": [216, 218, 222], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "TestVisualEditorAPI.test_ai_suggestion_request_model": {"executed_lines": [226, 228, 232], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestVisualEditorAPI.test_ai_suggestion_response_model": {"executed_lines": [236, 238, 242], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "TestVisualEditorAPI.test_template_request_model": {"executed_lines": [246, 248, 252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestVisualEditorAPI.test_create_session_endpoint": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestVisualEditorAPI.test_get_session_endpoint": {"executed_lines": [262, 264], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestVisualEditorAPI.test_edit_code_endpoint": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestVisualEditorAPI.test_ai_suggestion_endpoint": {"executed_lines": [281], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestVisualEditorAPI.test_apply_template_endpoint": {"executed_lines": [294], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestVisualEditorAPI.test_diff_view_endpoint": {"executed_lines": [303, 305], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "TestVisualEditorAPI.test_save_session_endpoint": {"executed_lines": [309], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307}, "TestVisualEditorAPI.test_router_prefix": {"executed_lines": [315, 317], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313}, "TestUploadAPI.test_upload_init_response_model": {"executed_lines": [325, 327, 334, 335], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestUploadAPI.test_chunk_upload_response_model": {"executed_lines": [339, 341, 345], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "TestUploadAPI.test_upload_complete_response_model": {"executed_lines": [349, 351, 359], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347}, "TestUploadAPI.test_upload_status_response_model": {"executed_lines": [363, 365, 369], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 361}, "TestUploadAPI.test_upload_error_response_model": {"executed_lines": [373, 375, 376, 378, 379], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [377], "excluded_lines": [], "start_line": 371}, "TestUploadAPI.test_upload_file_endpoint": {"executed_lines": [383, 385], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381}, "TestUploadAPI.test_upload_init_endpoint": {"executed_lines": [394], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 392}, "TestUploadAPI.test_upload_chunk_endpoint": {"executed_lines": [403], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestUploadAPI.test_upload_complete_endpoint": {"executed_lines": [412], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 410}, "TestUploadAPI.test_upload_status_endpoint": {"executed_lines": [418], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "TestUploadAPI.test_upload_cancel_endpoint": {"executed_lines": [424], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422}, "TestUploadAPI.test_upload_list_endpoint": {"executed_lines": [430], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "TestUploadAPI.test_upload_delete_endpoint": {"executed_lines": [436], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "TestUploadAPI.test_router_prefix": {"executed_lines": [442, 444], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440}, "TestAPIIntegration.test_task_priority_validation": {"executed_lines": [452], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 450}, "TestAPIIntegration.test_upload_validation": {"executed_lines": [458], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456}, "TestAPIIntegration.test_editor_session_validation": {"executed_lines": [466], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 33, 44, 53, 70, 83, 99, 108, 117, 130, 136, 143, 146, 151, 156, 161, 166, 171, 178, 181, 189, 204, 214, 224, 234, 244, 254, 260, 266, 279, 292, 301, 307, 313, 320, 323, 337, 347, 361, 371, 381, 392, 401, 410, 416, 422, 428, 434, 440, 447, 450, 456, 464], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTaskQueueAPI": {"executed_lines": [24, 25, 27, 28, 29, 30, 31, 35, 37, 41, 42, 46, 48, 50, 51, 55, 57, 67, 68, 72, 74, 80, 81, 85, 86, 88, 101, 102, 104, 110, 111, 113, 119, 120, 126, 132, 138, 140], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestQueryMonitoringAPI": {"executed_lines": [148, 149, 153, 154, 158, 159, 163, 164, 168, 169, 173, 175], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "TestVisualEditorAPI": {"executed_lines": [183, 185, 187, 191, 193, 201, 202, 206, 208, 212, 216, 218, 222, 226, 228, 232, 236, 238, 242, 246, 248, 252, 256, 262, 264, 268, 281, 294, 303, 305, 309, 315, 317], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestUploadAPI": {"executed_lines": [325, 327, 334, 335, 339, 341, 345, 349, 351, 359, 363, 365, 369, 373, 375, 376, 378, 379, 383, 385, 394, 403, 412, 418, 424, 430, 436, 442, 444], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [377], "excluded_lines": [], "start_line": 320}, "TestAPIIntegration": {"executed_lines": [452, 458, 466], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 447}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 33, 44, 53, 70, 83, 99, 108, 117, 130, 136, 143, 146, 151, 156, 161, 166, 171, 178, 181, 189, 204, 214, 224, 234, 244, 254, 260, 266, 279, 292, 301, 307, 313, 320, 323, 337, 347, 361, 371, 381, 392, 401, 410, 416, 422, 428, 434, 440, 447, 450, 456, 464], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_qa.py": {"executed_lines": [2, 3, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 35, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 110, 113, 114, 115], "summary": {"covered_lines": 85, "num_statements": 85, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"clear_mock_tasks": {"executed_lines": [9], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 7}, "test_start_qa_task_success": {"executed_lines": [12, 13, 14, 15, 16, 17], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "test_start_qa_task_invalid_id": {"executed_lines": [20, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "test_get_qa_status_not_found": {"executed_lines": [25, 26, 27], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "test_get_qa_status_progression": {"executed_lines": [30, 31, 32, 35, 40, 41, 42, 43], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "test_get_qa_report_not_ready": {"executed_lines": [46, 47, 48, 50, 51, 52], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "test_get_qa_report_success": {"executed_lines": [55, 56, 57, 60, 61, 63, 64, 65, 66], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "test_get_qa_report_html": {"executed_lines": [69, 70, 71, 72, 74, 75, 76], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "test_get_qa_report_unsupported": {"executed_lines": [79, 80, 81, 82, 84, 85, 86], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "test_list_qa_tasks": {"executed_lines": [89, 90, 91, 92, 94, 95, 96, 97], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "test_list_qa_tasks_filter": {"executed_lines": [100, 101, 102, 103, 104, 105, 108, 109, 110, 113, 114, 115], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "": {"executed_lines": [2, 3, 4, 6, 7, 11, 19, 24, 29, 45, 54, 68, 78, 88, 99], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 3, 4, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32, 35, 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, 52, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 110, 113, 114, 115], "summary": {"covered_lines": 85, "num_statements": 85, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_api_rate_limit_dashboard_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 24, 25, 26, 29, 32, 33, 34, 36, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 56, 58, 60, 61, 62, 64, 65, 66, 67, 69, 70, 71, 73, 81, 83, 84, 85, 87, 88, 90, 91, 92, 94, 102, 104, 105, 106, 108, 109, 111, 112, 114, 120, 121, 122, 124, 125, 126, 127, 130, 133, 134, 135, 137, 142, 144, 145, 146, 148, 149, 150, 151, 152, 154, 155, 157, 159, 160, 161, 163, 164, 165, 167, 168, 170, 177, 178, 179, 181, 184, 187, 188, 190, 199, 200, 201, 203, 204, 205, 206, 208, 209, 211, 223, 224, 225, 227, 228, 229, 230, 232, 233, 235, 237, 238, 239, 240, 243, 246, 247, 249, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 262, 263, 265, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 284, 285, 287, 288, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 301, 302, 304, 305, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 322, 323, 325, 326, 327, 329, 330, 331, 332, 335, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 359, 360, 362, 363, 364, 365, 366, 367, 369, 370, 371, 373, 374, 376, 377, 379, 380, 381, 382, 383, 384, 386, 390, 391, 393, 394, 395, 398, 401, 403, 411, 412, 413, 416, 419, 421, 428, 429, 432, 435, 437, 447, 448, 451, 454, 456, 464, 471, 472, 475, 478, 480, 487, 488, 490, 492, 493, 494], "summary": {"covered_lines": 271, "num_statements": 271, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestDashboardEndpoint.test_get_dashboard_with_data": {"executed_lines": [36, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestDashboardEndpoint.test_get_dashboard_empty_metrics": {"executed_lines": [58, 60, 61, 62, 64, 65, 66, 67], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestDashboardEndpoint.test_dashboard_endpoint_stats": {"executed_lines": [73, 81, 83, 84, 85, 87, 88], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestDashboardEndpoint.test_dashboard_top_blocked": {"executed_lines": [94, 102, 104, 105, 106, 108, 109], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestDashboardEndpoint.test_dashboard_recent_activity": {"executed_lines": [114, 120, 121, 122, 124, 125, 126, 127], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestSummaryEndpoint.test_get_summary_with_data": {"executed_lines": [137, 142, 144, 145, 146, 148, 149, 150, 151, 152], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestSummaryEndpoint.test_get_summary_empty": {"executed_lines": [157, 159, 160, 161, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestSummaryEndpoint.test_get_summary_ignores_unknown": {"executed_lines": [170, 177, 178, 179, 181], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "TestEndpointsStatsEndpoint.test_get_endpoint_stats": {"executed_lines": [190, 199, 200, 201, 203, 204, 205, 206], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestEndpointsStatsEndpoint.test_get_endpoint_stats_sorted": {"executed_lines": [211, 223, 224, 225, 227, 228, 229, 230], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestEndpointsStatsEndpoint.test_get_endpoint_stats_empty": {"executed_lines": [235, 237, 238, 239, 240], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "TestClientStatsEndpoint.test_get_client_stats_no_redis": {"executed_lines": [249, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247}, "TestClientStatsEndpoint.test_get_client_stats_with_users": {"executed_lines": [265, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263}, "TestClientStatsEndpoint.test_get_client_stats_with_ips": {"executed_lines": [287, 288, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 301, 302], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestClientStatsEndpoint.test_get_client_stats_limit": {"executed_lines": [307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestClientStatsEndpoint.test_get_client_stats_with_redis": {"executed_lines": [325, 326, 327, 329, 330, 331, 332], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestConfigEndpoint.test_get_config": {"executed_lines": [341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339}, "TestConfigEndpoint.test_update_config": {"executed_lines": [362, 363, 364, 365, 366, 367, 369, 370, 371, 373, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "TestConfigEndpoint.test_update_config_multiple_fields": {"executed_lines": [379, 380, 381, 382, 383, 384, 386, 390, 391, 393, 394, 395], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "TestRateLimitSummaryModel.test_summary_model_creation": {"executed_lines": [403, 411, 412, 413], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestEndpointStatsModel.test_endpoint_stats_creation": {"executed_lines": [421, 428, 429], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestClientStatsModel.test_client_stats_creation": {"executed_lines": [437, 447, 448], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "TestDashboardStatsModel.test_dashboard_stats_creation": {"executed_lines": [456, 464, 471, 472], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 454}, "TestConfigModels.test_config_info_creation": {"executed_lines": [480, 487, 488], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 478}, "TestConfigModels.test_config_update_request": {"executed_lines": [492, 493, 494], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 24, 25, 26, 29, 32, 33, 34, 55, 56, 69, 70, 71, 90, 91, 92, 111, 112, 130, 133, 134, 135, 154, 155, 167, 168, 184, 187, 188, 208, 209, 232, 233, 243, 246, 247, 262, 263, 284, 285, 304, 305, 322, 323, 335, 338, 339, 359, 360, 376, 377, 398, 401, 416, 419, 432, 435, 451, 454, 475, 478, 490], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestDashboardEndpoint": {"executed_lines": [36, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 60, 61, 62, 64, 65, 66, 67, 73, 81, 83, 84, 85, 87, 88, 94, 102, 104, 105, 106, 108, 109, 114, 120, 121, 122, 124, 125, 126, 127], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestSummaryEndpoint": {"executed_lines": [137, 142, 144, 145, 146, 148, 149, 150, 151, 152, 157, 159, 160, 161, 163, 164, 165, 170, 177, 178, 179, 181], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestEndpointsStatsEndpoint": {"executed_lines": [190, 199, 200, 201, 203, 204, 205, 206, 211, 223, 224, 225, 227, 228, 229, 230, 235, 237, 238, 239, 240], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 184}, "TestClientStatsEndpoint": {"executed_lines": [249, 250, 251, 252, 253, 254, 255, 257, 258, 259, 260, 265, 266, 268, 269, 270, 271, 272, 273, 274, 276, 277, 278, 279, 280, 281, 282, 287, 288, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 301, 302, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 325, 326, 327, 329, 330, 331, 332], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243}, "TestConfigEndpoint": {"executed_lines": [341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 362, 363, 364, 365, 366, 367, 369, 370, 371, 373, 374, 379, 380, 381, 382, 383, 384, 386, 390, 391, 393, 394, 395], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestRateLimitSummaryModel": {"executed_lines": [403, 411, 412, 413], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398}, "TestEndpointStatsModel": {"executed_lines": [421, 428, 429], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "TestClientStatsModel": {"executed_lines": [437, 447, 448], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "TestDashboardStatsModel": {"executed_lines": [456, 464, 471, 472], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451}, "TestConfigModels": {"executed_lines": [480, 487, 488, 492, 493, 494], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 24, 25, 26, 29, 32, 33, 34, 55, 56, 69, 70, 71, 90, 91, 92, 111, 112, 130, 133, 134, 135, 154, 155, 167, 168, 184, 187, 188, 208, 209, 232, 233, 243, 246, 247, 262, 263, 284, 285, 304, 305, 322, 323, 335, 338, 339, 359, 360, 376, 377, 398, 401, 416, 419, 432, 435, 451, 454, 475, 478, 490], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_asset_conversion_service.py": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 27, 31, 32, 33, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 48, 51, 53, 54, 56, 57, 58, 59, 60, 62, 66, 67, 69, 71, 72, 73, 75, 76, 77, 78, 79, 81, 84, 86, 90, 91, 93, 94, 95, 96, 97, 100, 101, 102, 103, 104, 105, 107], "summary": {"covered_lines": 73, "num_statements": 75, "percent_covered": 97.33333333333333, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.33333333333333, "percent_statements_covered_display": "97"}, "missing_lines": [98, 108], "excluded_lines": [], "functions": {"TestAssetConversionService.service": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "TestAssetConversionService.mock_asset": {"executed_lines": [14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestAssetConversionService.test_convert_asset_success": {"executed_lines": [23, 24, 25, 27, 31, 32, 33, 35, 37, 38, 39, 40], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestAssetConversionService.test_convert_asset_not_found": {"executed_lines": [44, 45, 46, 48, 51, 53, 54], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestAssetConversionService.test_convert_assets_for_conversion": {"executed_lines": [58, 59, 60, 62, 66, 67, 69, 71, 72, 73], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestAssetConversionService.test_call_ai_engine_convert_asset_success": {"executed_lines": [77, 78, 79, 81, 84, 86, 90, 91], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestAssetConversionService.test_fallback_texture_conversion": {"executed_lines": [95, 96, 97], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [98], "excluded_lines": [], "start_line": 94}, "TestAssetConversionService.test_fallback_sound_conversion": {"executed_lines": [102, 103, 104, 105], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 12, 13, 21, 22, 42, 43, 56, 57, 75, 76, 93, 94, 100, 101, 107], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [108], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAssetConversionService": {"executed_lines": [10, 14, 15, 16, 17, 18, 19, 23, 24, 25, 27, 31, 32, 33, 35, 37, 38, 39, 40, 44, 45, 46, 48, 51, 53, 54, 58, 59, 60, 62, 66, 67, 69, 71, 72, 73, 77, 78, 79, 81, 84, 86, 90, 91, 95, 96, 97, 102, 103, 104, 105], "summary": {"covered_lines": 51, "num_statements": 52, "percent_covered": 98.07692307692308, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.07692307692308, "percent_statements_covered_display": "98"}, "missing_lines": [98], "excluded_lines": [], "start_line": 7}, "": {"executed_lines": [2, 3, 4, 5, 7, 8, 9, 12, 13, 21, 22, 42, 43, 56, 57, 75, 76, 93, 94, 100, 101, 107], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [108], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_automation_metrics.py": {"executed_lines": [13, 14, 15, 16, 18, 32, 35, 37, 43, 44, 45, 46, 47, 48, 50, 52, 53, 55, 61, 63, 65, 70, 73, 76, 77, 80, 81, 82, 83, 85, 87, 89, 90, 92, 94, 96, 102, 103, 104, 106, 108, 109, 111, 123, 124, 125, 126, 127, 128, 129, 131, 133, 134, 136, 137, 138, 139, 141, 144, 145, 151, 153, 154, 155, 157, 160, 161, 167, 169, 170, 171, 173, 176, 177, 185, 187, 188, 189, 191, 193, 196, 197, 198, 199, 207, 210, 212, 215, 216, 223, 225, 226, 227, 229, 232, 233, 234, 241, 243, 244, 246, 250, 251, 259, 261, 262, 264, 266, 269, 270, 278, 285, 286, 287, 289, 292, 293, 300, 302, 303, 304, 305, 308, 309, 310, 311, 312, 313, 316, 317, 319, 322, 323, 331, 334, 336, 339, 340, 345, 347, 349, 350, 352, 355, 356, 363, 364, 365, 368, 369, 370, 373, 374, 375, 377, 380, 383, 388, 391, 397, 398, 399, 400, 403, 406, 408, 411, 413, 414, 416, 417, 418, 424, 429, 430, 431, 432, 435, 438, 441, 444, 446, 451, 452, 454, 457, 459, 460, 463, 468, 470, 471, 473, 476, 478, 483, 485, 486, 490, 493, 496, 498, 499, 500, 502, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518], "summary": {"covered_lines": 219, "num_statements": 219, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestConversionEvent.test_conversion_event_creation": {"executed_lines": [37, 43, 44, 45, 46, 47, 48], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestConversionEvent.test_conversion_event_with_timestamps": {"executed_lines": [52, 53, 55, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestConversionEvent.test_conversion_event_duration_override": {"executed_lines": [65, 70], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestAutomationMetricsService.service": {"executed_lines": [80, 81, 82, 83, 85], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestAutomationMetricsService.test_singleton_pattern": {"executed_lines": [89, 90, 92], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestAutomationMetricsService.test_record_conversion_event": {"executed_lines": [96, 102, 103, 104], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestAutomationMetricsService.test_record_event_with_all_fields": {"executed_lines": [108, 109, 111, 123, 124, 125, 126, 127, 128, 129], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestAutomationMetricsService.test_get_current_metrics_empty": {"executed_lines": [133, 134, 136, 137, 138, 139], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "TestAutomationMetricsService.test_get_current_metrics_automation_rate": {"executed_lines": [144, 145, 151, 153, 154, 155], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141}, "TestAutomationMetricsService.test_get_current_metrics_one_click_rate": {"executed_lines": [160, 161, 167, 169, 170, 171], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestAutomationMetricsService.test_get_current_metrics_auto_recovery_rate": {"executed_lines": [176, 177, 185, 187, 188, 189], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestAutomationMetricsService.test_get_current_metrics_conversion_time": {"executed_lines": [193, 196, 197, 198, 199, 207, 210], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestAutomationMetricsService.test_get_current_metrics_mode_classification_accuracy": {"executed_lines": [215, 216, 223, 225, 226, 227], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestAutomationMetricsService.test_get_current_metrics_user_satisfaction": {"executed_lines": [232, 233, 234, 241, 243, 244], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestAutomationMetricsService.test_get_current_metrics_target_status": {"executed_lines": [250, 251, 259, 261, 262, 264], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246}, "TestAutomationMetricsService.test_get_current_metrics_period_filter": {"executed_lines": [269, 270, 278, 285, 286, 287], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestAutomationMetricsService.test_get_dashboard_data_structure": {"executed_lines": [292, 293, 300, 302, 303, 304, 305, 308, 309, 310, 311, 312, 313, 316, 317], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289}, "TestAutomationMetricsService.test_get_dashboard_data_overall_status": {"executed_lines": [322, 323, 331, 334], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestAutomationMetricsService.test_reset_metrics": {"executed_lines": [339, 340, 345, 347, 349, 350], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336}, "TestAutomationMetricsService.test_get_all_events_pagination": {"executed_lines": [355, 356, 363, 364, 365, 368, 369, 370, 373, 374, 375], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 352}, "TestAutomationMetricsService.test_get_all_events_date_filter": {"executed_lines": [380, 383, 388, 391, 397, 398, 399, 400], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "TestAutomationMetricsServiceClass.test_concurrent_event_recording": {"executed_lines": [408, 411, 413, 414, 416, 424, 429, 430, 431, 432, 435], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 406}, "TestAutomationMetricsServiceClass.test_concurrent_event_recording.record_events": {"executed_lines": [417, 418], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "TestModuleLevelFunctions.test_record_conversion_event_function": {"executed_lines": [444, 446, 451, 452], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 441}, "TestModuleLevelFunctions.test_get_current_metrics_function": {"executed_lines": [457, 459, 460, 463, 468, 470, 471], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 454}, "TestModuleLevelFunctions.test_get_dashboard_data_function": {"executed_lines": [476, 478, 483, 485, 486], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "TestAPIResponseModels.test_metrics_targets_defined": {"executed_lines": [498, 499, 500], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 496}, "TestAPIResponseModels.test_snapshot_has_required_fields": {"executed_lines": [504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 502}, "": {"executed_lines": [13, 14, 15, 16, 18, 32, 35, 50, 63, 73, 76, 77, 87, 94, 106, 131, 141, 157, 173, 191, 212, 229, 246, 266, 289, 319, 336, 352, 377, 403, 406, 438, 441, 454, 473, 490, 493, 496, 502], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionEvent": {"executed_lines": [37, 43, 44, 45, 46, 47, 48, 52, 53, 55, 61, 65, 70], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestAutomationMetricsService": {"executed_lines": [80, 81, 82, 83, 85, 89, 90, 92, 96, 102, 103, 104, 108, 109, 111, 123, 124, 125, 126, 127, 128, 129, 133, 134, 136, 137, 138, 139, 144, 145, 151, 153, 154, 155, 160, 161, 167, 169, 170, 171, 176, 177, 185, 187, 188, 189, 193, 196, 197, 198, 199, 207, 210, 215, 216, 223, 225, 226, 227, 232, 233, 234, 241, 243, 244, 250, 251, 259, 261, 262, 264, 269, 270, 278, 285, 286, 287, 292, 293, 300, 302, 303, 304, 305, 308, 309, 310, 311, 312, 313, 316, 317, 322, 323, 331, 334, 339, 340, 345, 347, 349, 350, 355, 356, 363, 364, 365, 368, 369, 370, 373, 374, 375, 380, 383, 388, 391, 397, 398, 399, 400], "summary": {"covered_lines": 121, "num_statements": 121, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestAutomationMetricsServiceClass": {"executed_lines": [408, 411, 413, 414, 416, 417, 418, 424, 429, 430, 431, 432, 435], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403}, "TestModuleLevelFunctions": {"executed_lines": [444, 446, 451, 452, 457, 459, 460, 463, 468, 470, 471, 476, 478, 483, 485, 486], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438}, "TestAPIResponseModels": {"executed_lines": [498, 499, 500, 504, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 493}, "": {"executed_lines": [13, 14, 15, 16, 18, 32, 35, 50, 63, 73, 76, 77, 87, 94, 106, 131, 141, 157, 173, 191, 212, 229, 246, 266, 289, 319, 336, 352, 377, 403, 406, 438, 441, 454, 473, 490, 493, 496, 502], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_batch_expanded.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 34, 37, 39, 45, 46, 48, 50, 58, 59, 61, 63, 64, 66, 68, 69, 74, 77, 79, 86, 87, 88, 91, 94, 96, 105, 106, 109, 112, 114, 120, 121, 124, 127, 128, 130, 131, 132, 135, 137, 138, 140, 141, 142, 144, 146, 147, 149, 150, 151, 157], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestBatchConversionRequest.test_valid_request": {"executed_lines": [39, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "TestBatchConversionRequest.test_request_with_options": {"executed_lines": [50, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestBatchConversionRequest.test_request_min_files_validation": {"executed_lines": [63, 64], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestBatchConversionRequest.test_request_max_files_validation": {"executed_lines": [68, 69], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "TestBatchConversionResponse.test_response_creation": {"executed_lines": [79, 86, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestBatchStatusResponse.test_status_response_creation": {"executed_lines": [96, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestBatchResultResponse.test_result_response_creation": {"executed_lines": [114, 120, 121], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestProcessBatchConversion.test_process_batch_basic": {"executed_lines": [130, 131, 132, 135], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestProcessBatchConversion.test_process_batch_empty": {"executed_lines": [140, 141, 142, 144], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestProcessBatchConversion.test_process_batch_with_options": {"executed_lines": [149, 150, 151, 157], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 34, 37, 48, 61, 66, 74, 77, 91, 94, 109, 112, 124, 127, 128, 137, 138, 146, 147], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBatchConversionRequest": {"executed_lines": [39, 45, 46, 50, 58, 59, 63, 64, 68, 69], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestBatchConversionResponse": {"executed_lines": [79, 86, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestBatchStatusResponse": {"executed_lines": [96, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestBatchResultResponse": {"executed_lines": [114, 120, 121], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "TestProcessBatchConversion": {"executed_lines": [130, 131, 132, 135, 140, 141, 142, 144, 149, 150, 151, 157], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 34, 37, 48, 61, 66, 74, 77, 91, 94, 109, 112, 124, 127, 128, 137, 138, 146, 147], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_batch_queuing.py": {"executed_lines": [10, 11, 12, 13, 14, 16, 18, 30, 31, 33, 34, 35, 38, 39, 41, 49, 50, 52, 63, 64, 66, 73, 83, 86, 88, 94, 95, 96, 97, 98, 100, 102, 109, 118, 121, 124, 126, 131, 132, 133, 134, 136, 138, 147, 153, 154, 156, 157, 160, 163, 165, 166, 167, 168, 169, 170, 172, 174, 175, 176, 177, 178, 181, 184, 185, 187, 193, 194, 196, 197, 198, 199, 200, 202, 203, 207, 213, 214, 215, 216, 217, 219, 220, 222, 226, 232, 233, 235, 236, 238, 243, 248, 255, 256, 258, 259, 262, 267, 272, 279, 280, 282, 283, 286, 287, 293, 295, 296, 298, 299, 302, 303, 310, 312, 313, 314, 316, 317, 320, 321, 327, 329, 330, 332, 333, 335, 337, 338, 344, 346, 347, 349, 350, 352, 357, 358, 360, 361, 362, 364, 365, 367, 372, 373, 375, 376, 377, 379, 380, 382, 387, 393, 394, 395, 397, 398, 400, 406, 409, 410, 412, 413, 414, 416, 417, 419, 426, 428, 429, 431, 432, 434, 439, 440, 442, 443, 445, 446, 448, 452, 454, 455, 457, 458, 461, 467, 469, 470, 471, 472, 474, 475, 478, 486, 493, 494, 497, 499, 500, 503, 505, 506, 509, 510, 517, 522, 523, 525, 526, 529, 531, 532, 533, 536, 540, 542, 547, 552, 553, 555, 556, 558, 563, 568, 574, 576, 577, 580, 583, 585, 586, 587, 588, 590, 592, 599, 600, 603, 606, 608, 609, 610, 611, 613, 615, 616, 617, 618, 621, 624, 625, 627, 628, 630, 631, 633, 637, 639, 640, 642, 643, 645, 646, 648, 649, 651, 652, 654, 655, 657, 658, 660, 661, 663, 664, 666, 670, 672, 673, 675, 677, 684, 685], "summary": {"covered_lines": 283, "num_statements": 283, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"clean_queue": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "queue": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "sample_mod_data": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "sample_classification": {"executed_lines": [66, 73], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestBatchJob.test_batch_job_creation": {"executed_lines": [88, 94, 95, 96, 97, 98], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestBatchJob.test_batch_job_lt": {"executed_lines": [102, 109, 118], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "TestBatchGroup.test_batch_group_creation": {"executed_lines": [126, 131, 132, 133, 134], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestBatchGroup.test_batch_group_with_jobs": {"executed_lines": [138, 147, 153, 154, 156, 157], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestBatchQueueStats.test_stats_to_dict": {"executed_lines": [165, 166, 167, 168, 169, 170, 172, 174, 175, 176, 177, 178], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "TestIntelligentBatchQueue.test_enqueue_job": {"executed_lines": [187, 193, 194, 196, 197, 198, 199, 200], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185}, "TestIntelligentBatchQueue.test_enqueue_job_with_classification": {"executed_lines": [207, 213, 214, 215, 216, 217], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestIntelligentBatchQueue.test_enqueue_batch": {"executed_lines": [222, 226, 232, 233], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 220}, "TestIntelligentBatchQueue.test_enqueue_with_priority": {"executed_lines": [238, 243, 248, 255, 256], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestIntelligentBatchQueue.test_mode_grouping": {"executed_lines": [262, 267, 272, 279, 280], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "TestIntelligentBatchQueue.test_get_next_job": {"executed_lines": [286, 287, 293, 295, 296], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283}, "TestIntelligentBatchQueue.test_get_batch_group": {"executed_lines": [302, 303, 310, 312, 313, 314], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestIntelligentBatchQueue.test_get_batch_group_partial": {"executed_lines": [320, 321, 327, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestIntelligentBatchQueue.test_create_mixed_batch": {"executed_lines": [335, 337, 338, 344, 346, 347], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "TestIntelligentBatchQueue.test_update_job_status": {"executed_lines": [352, 357, 358, 360, 361, 362], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestIntelligentBatchQueue.test_update_job_status_completed": {"executed_lines": [367, 372, 373, 375, 376, 377], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestIntelligentBatchQueue.test_update_job_status_failed": {"executed_lines": [382, 387, 393, 394, 395], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "TestIntelligentBatchQueue.test_retry_job": {"executed_lines": [400, 406, 409, 410, 412, 413, 414], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398}, "TestIntelligentBatchQueue.test_retry_job_max_retries": {"executed_lines": [419, 426, 428, 429], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 417}, "TestIntelligentBatchQueue.test_cancel_job": {"executed_lines": [434, 439, 440, 442, 443], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "TestIntelligentBatchQueue.test_cancel_job_processing_fails": {"executed_lines": [448, 452, 454, 455], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 446}, "TestIntelligentBatchQueue.test_get_queue_stats": {"executed_lines": [461, 467, 469, 470, 471, 472], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 458}, "TestIntelligentBatchQueue.test_priority_score_computation": {"executed_lines": [478, 486, 493, 494, 497], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 475}, "TestIntelligentBatchQueue.test_process_batch_parallel": {"executed_lines": [503, 509, 510, 517, 522, 523], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 500}, "TestIntelligentBatchQueue.test_process_batch_parallel.mock_processor": {"executed_lines": [505, 506], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503}, "TestIntelligentBatchQueue.test_process_batch_parallel_with_failures": {"executed_lines": [529, 536, 540, 542, 547, 552, 553], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 526}, "TestIntelligentBatchQueue.test_process_batch_parallel_with_failures.failing_processor": {"executed_lines": [531, 532, 533], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529}, "TestIntelligentBatchQueue.test_queue_depth_by_mode": {"executed_lines": [558, 563, 568, 574, 576, 577], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 556}, "TestQueuePriority.test_priority_to_score": {"executed_lines": [585, 586, 587, 588], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 583}, "TestQueuePriority.test_priority_ordering": {"executed_lines": [592, 599, 600], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 590}, "TestGetBatchQueue.test_get_batch_queue_returns_instance": {"executed_lines": [608, 609, 610, 611], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606}, "TestGetBatchQueue.test_get_batch_queue_same_instance": {"executed_lines": [615, 616, 617, 618], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613}, "TestEdgeCases.test_get_job_not_found": {"executed_lines": [627, 628], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625}, "TestEdgeCases.test_update_status_not_found": {"executed_lines": [633, 637], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 631}, "TestEdgeCases.test_cancel_not_found": {"executed_lines": [642, 643], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 640}, "TestEdgeCases.test_retry_not_found": {"executed_lines": [648, 649], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 646}, "TestEdgeCases.test_get_batch_group_empty_queue": {"executed_lines": [654, 655], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652}, "TestEdgeCases.test_create_mixed_batch_empty_queue": {"executed_lines": [660, 661], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 658}, "TestEdgeCases.test_empty_batch_enqueue": {"executed_lines": [666, 670], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 664}, "TestEdgeCases.test_queue_with_disabled_mode_grouping": {"executed_lines": [675, 677, 684, 685], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 673}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 18, 30, 31, 38, 39, 49, 50, 63, 64, 83, 86, 100, 121, 124, 136, 160, 163, 181, 184, 185, 202, 203, 219, 220, 235, 236, 258, 259, 282, 283, 298, 299, 316, 317, 332, 333, 349, 350, 364, 365, 379, 380, 397, 398, 416, 417, 431, 432, 445, 446, 457, 458, 474, 475, 499, 500, 525, 526, 555, 556, 580, 583, 590, 603, 606, 613, 621, 624, 625, 630, 631, 639, 640, 645, 646, 651, 652, 657, 658, 663, 664, 672, 673], "summary": {"covered_lines": 89, "num_statements": 89, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBatchJob": {"executed_lines": [88, 94, 95, 96, 97, 98, 102, 109, 118], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestBatchGroup": {"executed_lines": [126, 131, 132, 133, 134, 138, 147, 153, 154, 156, 157], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestBatchQueueStats": {"executed_lines": [165, 166, 167, 168, 169, 170, 172, 174, 175, 176, 177, 178], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestIntelligentBatchQueue": {"executed_lines": [187, 193, 194, 196, 197, 198, 199, 200, 207, 213, 214, 215, 216, 217, 222, 226, 232, 233, 238, 243, 248, 255, 256, 262, 267, 272, 279, 280, 286, 287, 293, 295, 296, 302, 303, 310, 312, 313, 314, 320, 321, 327, 329, 330, 335, 337, 338, 344, 346, 347, 352, 357, 358, 360, 361, 362, 367, 372, 373, 375, 376, 377, 382, 387, 393, 394, 395, 400, 406, 409, 410, 412, 413, 414, 419, 426, 428, 429, 434, 439, 440, 442, 443, 448, 452, 454, 455, 461, 467, 469, 470, 471, 472, 478, 486, 493, 494, 497, 503, 505, 506, 509, 510, 517, 522, 523, 529, 531, 532, 533, 536, 540, 542, 547, 552, 553, 558, 563, 568, 574, 576, 577], "summary": {"covered_lines": 122, "num_statements": 122, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestQueuePriority": {"executed_lines": [585, 586, 587, 588, 592, 599, 600], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 580}, "TestGetBatchQueue": {"executed_lines": [608, 609, 610, 611, 615, 616, 617, 618], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603}, "TestEdgeCases": {"executed_lines": [627, 628, 633, 637, 642, 643, 648, 649, 654, 655, 660, 661, 666, 670, 675, 677, 684, 685], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 621}, "": {"executed_lines": [10, 11, 12, 13, 14, 16, 18, 30, 31, 33, 34, 35, 38, 39, 41, 49, 50, 52, 63, 64, 66, 73, 83, 86, 100, 121, 124, 136, 160, 163, 181, 184, 185, 202, 203, 219, 220, 235, 236, 258, 259, 282, 283, 298, 299, 316, 317, 332, 333, 349, 350, 364, 365, 379, 380, 397, 398, 416, 417, 431, 432, 445, 446, 457, 458, 474, 475, 499, 500, 525, 526, 555, 556, 580, 583, 590, 603, 606, 613, 621, 624, 625, 630, 631, 639, 640, 645, 646, 651, 652, 657, 658, 663, 664, 672, 673], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_behavior_files_security.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 24, 28, 29, 32, 36, 44, 45, 46, 54, 58, 66, 67, 74, 75, 76], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 59.183673469387756, "percent_statements_covered_display": "59"}, "missing_lines": [82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 96, 102, 105, 106, 109, 110, 112, 113, 114], "excluded_lines": [], "functions": {"sample_conversion_job": {"executed_lines": [17, 24], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestBehaviorFilesSecurity.test_create_behavior_file_path_traversal": {"executed_lines": [36, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestBehaviorFilesSecurity.test_create_behavior_file_valid_paths": {"executed_lines": [58, 66, 67, 74], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestBehaviorFilesSecurity.test_export_zip_sanitization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 96, 102, 105, 106, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 76}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 28, 29, 32, 54, 75, 76], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBehaviorFilesSecurity": {"executed_lines": [36, 44, 45, 46, 58, 66, 67, 74], "summary": {"covered_lines": 8, "num_statements": 28, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 96, 102, 105, 106, 109, 110, 112, 113, 114], "excluded_lines": [], "start_line": 29}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 24, 28, 29, 32, 54, 75, 76], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_behavior_templates_crud.py": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 12, 15, 16, 18, 19, 20, 21, 23, 24, 25, 27, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 54, 55, 57, 58, 60, 71, 72, 73, 75, 76, 78, 79, 80, 81, 82, 84, 85, 89, 90, 92, 93, 95, 97, 98, 102, 103, 105, 106, 107, 108, 109, 111, 122, 123, 127, 128, 130, 131, 132, 133, 134, 136, 137, 139, 145, 146, 147, 149, 150, 152, 154, 155, 159, 160, 162, 163, 164, 165, 166, 168, 170, 172, 178, 180, 182, 183, 185, 188, 189, 192, 193, 195, 197, 198, 202, 203, 204, 206, 207, 209, 212, 213, 214, 216, 217, 221, 222, 223, 225, 226, 228, 230, 231, 235, 236, 238, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 258, 259, 260, 261, 263, 264, 266, 268, 269, 270, 272, 273], "summary": {"covered_lines": 149, "num_statements": 149, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestBehaviorTemplatesCRUD.test_create_behavior_template_success": {"executed_lines": [18, 19, 20, 21, 23, 24, 25, 27, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestBehaviorTemplatesCRUD.test_create_behavior_template_no_commit": {"executed_lines": [57, 58, 60, 71, 72, 73], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestBehaviorTemplatesCRUD.test_get_behavior_template_success": {"executed_lines": [78, 79, 80, 81, 82, 84, 85, 89, 90], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestBehaviorTemplatesCRUD.test_get_behavior_template_invalid_uuid": {"executed_lines": [95, 97, 98], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestBehaviorTemplatesCRUD.test_get_behavior_templates_all_filters": {"executed_lines": [105, 106, 107, 108, 109, 111, 122, 123], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestBehaviorTemplatesCRUD.test_update_behavior_template_success": {"executed_lines": [130, 131, 132, 133, 134, 136, 137, 139, 145, 146, 147], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestBehaviorTemplatesCRUD.test_update_behavior_template_invalid_uuid": {"executed_lines": [152, 154, 155], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestBehaviorTemplatesCRUD.test_update_behavior_template_no_updates": {"executed_lines": [162, 163, 164, 165, 166, 168, 170, 172, 178, 180], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestBehaviorTemplatesCRUD.test_delete_behavior_template_success": {"executed_lines": [185, 188, 189, 192, 193, 195, 197, 198, 202, 203, 204], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "TestBehaviorTemplatesCRUD.test_delete_behavior_template_not_found": {"executed_lines": [209, 212, 213, 214, 216, 217, 221, 222, 223], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207}, "TestBehaviorTemplatesCRUD.test_delete_behavior_template_invalid_uuid": {"executed_lines": [228, 230, 231], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "TestBehaviorTemplatesCRUD.test_apply_behavior_template_success": {"executed_lines": [238, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 258, 259, 260, 261], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestBehaviorTemplatesCRUD.test_apply_behavior_template_not_found": {"executed_lines": [266, 268, 269, 270, 272, 273], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 12, 15, 16, 54, 55, 75, 76, 92, 93, 102, 103, 127, 128, 149, 150, 159, 160, 182, 183, 206, 207, 225, 226, 235, 236, 263, 264], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBehaviorTemplatesCRUD": {"executed_lines": [18, 19, 20, 21, 23, 24, 25, 27, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 57, 58, 60, 71, 72, 73, 78, 79, 80, 81, 82, 84, 85, 89, 90, 95, 97, 98, 105, 106, 107, 108, 109, 111, 122, 123, 130, 131, 132, 133, 134, 136, 137, 139, 145, 146, 147, 152, 154, 155, 162, 163, 164, 165, 166, 168, 170, 172, 178, 180, 185, 188, 189, 192, 193, 195, 197, 198, 202, 203, 204, 209, 212, 213, 214, 216, 217, 221, 222, 223, 228, 230, 231, 238, 240, 241, 242, 243, 244, 245, 246, 248, 249, 250, 252, 258, 259, 260, 261, 266, 268, 269, 270, 272, 273], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 12, 15, 16, 54, 55, 75, 76, 92, 93, 102, 103, 127, 128, 149, 150, 159, 160, 182, 183, 206, 207, 225, 226, 235, 236, 263, 264], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_build_performance_service_coverage.py": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 30, 39, 42, 43, 45, 46, 47, 49, 50, 52, 54, 56, 57, 58, 59, 61, 63, 64, 65, 66, 68, 70, 78, 79, 81, 82, 83, 84, 85, 86, 87, 89, 91, 92, 93, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 110, 112, 114, 115, 116, 118, 119, 120, 121, 123, 124, 125, 127, 129, 130, 132, 134, 135, 136, 139, 140, 141, 142, 143, 145, 147, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 164, 166, 168, 169, 172, 173, 174, 176, 177, 179, 180, 182, 184, 185, 188, 190, 191, 193, 194, 195, 197, 199, 201, 203, 204, 207, 208, 211, 212, 213, 214, 216, 218, 219, 220, 221, 222, 224, 225, 226, 227, 229, 231, 234, 238, 240, 244, 246, 248, 250, 251, 252, 253, 254, 255, 257, 259, 260, 261, 263, 265, 266, 268, 269, 270, 272, 274, 275, 276, 277, 279, 280, 281, 283, 285, 286, 288, 289, 290, 292, 295, 296, 297, 298, 299, 301, 302, 303, 306, 309, 310, 311, 312, 314, 315, 317, 318, 319, 320, 322, 323, 325, 326, 327, 329, 330, 331, 332, 334, 335, 337, 338, 339, 340, 342, 343, 345, 346, 347, 348, 350, 351, 353, 354, 355, 356, 358, 359, 361, 363, 364, 365, 366], "summary": {"covered_lines": 221, "num_statements": 221, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestBuildPerformanceServiceComprehensive.mock_cache": {"executed_lines": [45, 46, 47], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestBuildPerformanceServiceComprehensive.service": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestBuildPerformanceServiceComprehensive.test_initialization": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestBuildPerformanceServiceComprehensive.test_default_initialization": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestBuildPerformanceServiceComprehensive.test_start_tracking": {"executed_lines": [70, 78, 79, 81, 82, 83, 84, 85, 86, 87], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestBuildPerformanceServiceComprehensive.test_update_stage_new_and_existing": {"executed_lines": [91, 92, 93, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 110], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestBuildPerformanceServiceComprehensive.test_start_and_complete_stage_shortcuts": {"executed_lines": [114, 115, 116, 118, 119, 120, 121, 123, 124, 125], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestBuildPerformanceServiceComprehensive.test_update_stage_non_existent_build": {"executed_lines": [129, 130], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestBuildPerformanceServiceComprehensive.test_end_tracking_success": {"executed_lines": [134, 135, 136, 139, 140, 141, 142, 143, 145, 147, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 164], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestBuildPerformanceServiceComprehensive.test_end_tracking_calculates_default_score": {"executed_lines": [168, 169, 172, 173, 174, 176, 177, 179, 180], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestBuildPerformanceServiceComprehensive.test_get_snapshot": {"executed_lines": [184, 185, 188, 190, 191, 193, 194, 195], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "TestBuildPerformanceServiceComprehensive.test_get_snapshot_non_existent": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "TestBuildPerformanceServiceComprehensive.test_get_response_from_active_and_cache": {"executed_lines": [203, 204, 207, 208, 211, 212, 213, 214], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestBuildPerformanceServiceComprehensive.test_get_summary": {"executed_lines": [218, 219, 220, 221, 222, 224, 225, 226, 227], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "TestBuildPerformanceServiceComprehensive.test_get_stats_comprehensive": {"executed_lines": [231, 234, 238, 240, 244, 246, 248, 250, 251, 252, 253, 254, 255], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestBuildPerformanceServiceComprehensive.test_calculate_performance_score_edge_cases": {"executed_lines": [259, 260, 261], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestBuildPerformanceServiceComprehensive.test_calculate_build_efficiency_edge_cases": {"executed_lines": [265, 266, 268, 269, 270], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263}, "TestBuildPerformanceServiceComprehensive.test_capture_resource_usage_exception": {"executed_lines": [274, 275, 276, 277, 279, 280, 281], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestBuildPerformanceServiceComprehensive.test_track_stage_context_manager": {"executed_lines": [285, 286, 288, 289, 290, 292, 295, 296, 297, 298, 299, 301, 302, 303], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283}, "TestConvenienceFunctions.test_start_build_performance_tracking": {"executed_lines": [311, 312, 314, 315], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestConvenienceFunctions.test_update_build_stage": {"executed_lines": [319, 320, 322, 323, 325, 326, 327], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318}, "TestConvenienceFunctions.test_end_build_performance_tracking": {"executed_lines": [331, 332, 334, 335], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestConvenienceFunctions.test_get_build_performance": {"executed_lines": [339, 340, 342, 343], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 338}, "TestConvenienceFunctions.test_get_build_performance_snapshot": {"executed_lines": [347, 348, 350, 351], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "TestConvenienceFunctions.test_get_build_performance_stats": {"executed_lines": [355, 356, 358, 359], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestConvenienceFunctions.test_get_build_performance_service_singleton": {"executed_lines": [363, 364, 365, 366], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 361}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 30, 39, 42, 43, 49, 50, 54, 61, 68, 89, 112, 127, 132, 166, 182, 197, 201, 216, 229, 257, 263, 272, 283, 306, 309, 310, 317, 318, 329, 330, 337, 338, 345, 346, 353, 354, 361], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestBuildPerformanceServiceComprehensive": {"executed_lines": [45, 46, 47, 52, 56, 57, 58, 59, 63, 64, 65, 66, 70, 78, 79, 81, 82, 83, 84, 85, 86, 87, 91, 92, 93, 96, 97, 98, 99, 102, 103, 104, 105, 108, 109, 110, 114, 115, 116, 118, 119, 120, 121, 123, 124, 125, 129, 130, 134, 135, 136, 139, 140, 141, 142, 143, 145, 147, 152, 153, 154, 155, 156, 158, 160, 161, 162, 163, 164, 168, 169, 172, 173, 174, 176, 177, 179, 180, 184, 185, 188, 190, 191, 193, 194, 195, 199, 203, 204, 207, 208, 211, 212, 213, 214, 218, 219, 220, 221, 222, 224, 225, 226, 227, 231, 234, 238, 240, 244, 246, 248, 250, 251, 252, 253, 254, 255, 259, 260, 261, 265, 266, 268, 269, 270, 274, 275, 276, 277, 279, 280, 281, 285, 286, 288, 289, 290, 292, 295, 296, 297, 298, 299, 301, 302, 303], "summary": {"covered_lines": 146, "num_statements": 146, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestConvenienceFunctions": {"executed_lines": [311, 312, 314, 315, 319, 320, 322, 323, 325, 326, 327, 331, 332, 334, 335, 339, 340, 342, 343, 347, 348, 350, 351, 355, 356, 358, 359, 363, 364, 365, 366], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 30, 39, 42, 43, 49, 50, 54, 61, 68, 89, 112, 127, 132, 166, 182, 197, 201, 216, 229, 257, 263, 272, 283, 306, 309, 310, 317, 318, 329, 330, 337, 338, 345, 346, 353, 354, 361], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_cache_module_coverage.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 15, 18, 20, 21, 22, 23, 24, 26, 28, 30, 32, 34, 35, 36, 38, 40, 42, 44, 46, 47, 48, 50, 52, 54, 56, 59, 62, 63, 65, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 80, 82, 83, 85, 86, 87, 89, 91, 93, 95, 96, 98, 99, 100, 101, 102, 104, 105, 107, 109, 110, 111, 113, 115, 117, 118, 120, 121, 122, 124, 126, 128, 130, 133, 136, 137, 139, 140, 141, 142, 144, 145, 147, 149, 150, 151, 153, 155, 156, 158, 159, 160, 161, 162, 164, 165, 167, 169, 170, 171, 173, 176, 179, 180, 182, 183, 184, 185, 187, 188, 190, 192, 193, 194, 196, 198, 199, 201, 202, 203, 204, 206, 207, 209, 211, 212, 213, 215, 217, 218, 220, 221, 222, 223, 225, 226, 228, 230, 231, 232, 234, 236, 237, 239, 240, 242, 243, 244, 245, 247, 248, 250, 252, 253, 254, 256, 258, 261, 264, 265, 267, 268, 269, 270, 272, 273, 275, 277, 278, 279, 281, 283, 284, 286, 287, 288, 289, 291, 292, 294, 296, 297, 298, 300, 302, 305, 308, 309, 311, 312, 313, 314, 316, 317, 319, 321, 322, 323, 325, 327, 328, 330, 331, 332, 333, 334, 336, 337, 339, 341, 342, 343, 345, 347, 350, 353, 354, 356, 357, 358, 359, 361, 362, 364, 366, 367, 368, 370, 372, 373, 375, 376, 377, 378, 380, 381, 383, 385, 386, 387, 389, 391, 392, 394, 395, 396, 397, 399, 400, 402, 404, 405, 406, 408, 411, 414, 415, 417, 418, 420, 421, 423, 424, 425, 427, 428, 430, 432, 433, 434, 436, 438, 440, 442, 443, 444, 446, 448, 449, 450, 452, 454, 456, 458, 459, 460, 462, 464, 465, 466, 468, 470, 473, 476, 477, 479, 480, 481, 482, 484, 485, 487, 489, 490, 491, 493, 495, 496, 497, 517, 518, 520, 521, 522, 523, 525, 526, 528, 530, 531, 532, 534, 537, 540, 541, 543, 544, 545, 546, 548, 549, 551, 553, 554, 555, 557, 559, 561, 562, 564, 565, 566, 567, 569, 570, 572, 574, 575, 576, 578, 580, 583, 586, 587, 589, 590, 592, 595, 596, 597, 599, 600, 602, 604, 605, 606, 608, 611, 614, 615, 616, 635, 636, 638, 639, 640, 641, 642, 644, 645, 647, 649, 650, 651, 653, 656, 659, 662, 664, 666, 667, 668, 670, 672, 674, 675, 676, 677, 680], "summary": {"covered_lines": 404, "num_statements": 429, "percent_covered": 94.17249417249417, "percent_covered_display": "94", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 94.17249417249417, "percent_statements_covered_display": "94"}, "missing_lines": [499, 500, 501, 503, 504, 506, 508, 509, 510, 512, 514, 515, 593, 618, 619, 622, 623, 624, 626, 627, 628, 630, 632, 633, 681], "excluded_lines": [], "functions": {"TestCacheService.test_cache_service_init_with_redis": {"executed_lines": [20, 21, 22, 23, 24, 26, 28, 30], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestCacheService.test_cache_service_init_disabled_redis": {"executed_lines": [34, 35, 36, 38, 40, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestCacheService.test_json_encoder_default_datetime": {"executed_lines": [46, 47, 48, 50, 52, 54, 56], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestCacheServiceJobStatus.test_set_job_status": {"executed_lines": [65, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 80], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestCacheServiceJobStatus.test_set_job_status_disabled": {"executed_lines": [85, 86, 87, 89, 91, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestCacheServiceJobStatus.test_get_job_status": {"executed_lines": [98, 99, 100, 101, 102, 104, 105, 107, 109, 110, 111, 113, 115], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "TestCacheServiceJobStatus.test_get_job_status_disabled": {"executed_lines": [120, 121, 122, 124, 126, 128, 130], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestCacheServiceProgress.test_track_progress": {"executed_lines": [139, 140, 141, 142, 144, 145, 147, 149, 150, 151, 153], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "TestCacheServiceProgress.test_set_progress": {"executed_lines": [158, 159, 160, 161, 162, 164, 165, 167, 169, 170, 171, 173], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TestCacheServiceModAnalysis.test_cache_mod_analysis": {"executed_lines": [182, 183, 184, 185, 187, 188, 190, 192, 193, 194, 196], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestCacheServiceModAnalysis.test_cache_mod_analysis_with_ttl": {"executed_lines": [201, 202, 203, 204, 206, 207, 209, 211, 212, 213, 215], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "TestCacheServiceModAnalysis.test_get_mod_analysis_hit": {"executed_lines": [220, 221, 222, 223, 225, 226, 228, 230, 231, 232, 234, 236, 237], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "TestCacheServiceModAnalysis.test_get_mod_analysis_miss": {"executed_lines": [242, 243, 244, 245, 247, 248, 250, 252, 253, 254, 256, 258], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "TestCacheServiceConversionResult.test_cache_conversion_result": {"executed_lines": [267, 268, 269, 270, 272, 273, 275, 277, 278, 279, 281], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestCacheServiceConversionResult.test_get_conversion_result_hit": {"executed_lines": [286, 287, 288, 289, 291, 292, 294, 296, 297, 298, 300, 302], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "TestCacheServiceAssetConversion.test_cache_asset_conversion": {"executed_lines": [311, 312, 313, 314, 316, 317, 319, 321, 322, 323, 325], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309}, "TestCacheServiceAssetConversion.test_get_asset_conversion_hit": {"executed_lines": [330, 331, 332, 333, 334, 336, 337, 339, 341, 342, 343, 345, 347], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "TestCacheServiceInvalidation.test_invalidate_cache": {"executed_lines": [356, 357, 358, 359, 361, 362, 364, 366, 367, 368, 370], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestCacheServiceInvalidation.test_invalidate_conversion_cache": {"executed_lines": [375, 376, 377, 378, 380, 381, 383, 385, 386, 387, 389], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 373}, "TestCacheServiceInvalidation.test_invalidate_mod_analysis_cache": {"executed_lines": [394, 395, 396, 397, 399, 400, 402, 404, 405, 406, 408], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 392}, "TestCacheServiceStats.test_get_cache_stats": {"executed_lines": [417, 418, 420, 423, 424, 425, 427, 428, 430, 432, 433, 434, 436, 438], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 415}, "TestCacheServiceStats.test_get_cache_stats.mock_keys": {"executed_lines": [421], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "TestCacheServiceStats.test_get_cache_hit_rate": {"executed_lines": [442, 443, 444, 446, 448, 449, 450, 452, 454], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440}, "TestCacheServiceStats.test_get_cache_hit_rate_zero": {"executed_lines": [458, 459, 460, 462, 464, 465, 466, 468, 470], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456}, "TestCacheServiceExport.test_set_export_data": {"executed_lines": [479, 480, 481, 482, 484, 485, 487, 489, 490, 491, 493], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 477}, "TestCacheServiceExport.test_get_export_data_hit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [499, 500, 501, 503, 504, 506, 508, 509, 510, 512, 514, 515], "excluded_lines": [], "start_line": 497}, "TestCacheServiceExport.test_delete_export_data": {"executed_lines": [520, 521, 522, 523, 525, 526, 528, 530, 531, 532, 534], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 518}, "TestCacheServiceHashBased.test_cache_conversion_by_hash": {"executed_lines": [543, 544, 545, 546, 548, 549, 551, 553, 554, 555, 557, 559], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541}, "TestCacheServiceHashBased.test_get_cached_conversion_by_hash_hit": {"executed_lines": [564, 565, 566, 567, 569, 570, 572, 574, 575, 576, 578, 580], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 562}, "TestCacheServiceClear.test_clear_all_caches": {"executed_lines": [589, 590, 592, 595, 596, 597, 599, 600, 602, 604, 605, 606, 608], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 587}, "TestCacheServiceClear.test_clear_all_caches.mock_keys": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [593], "excluded_lines": [], "start_line": 592}, "TestCacheServiceAIEngine.test_get_ai_engine_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [618, 619, 622, 623, 624, 626, 627, 628, 630, 632, 633], "excluded_lines": [], "start_line": 616}, "TestCacheServiceAIEngine.test_subscribe_to_ai_engine_progress": {"executed_lines": [638, 639, 640, 641, 642, 644, 645, 647, 649, 650, 651, 653, 656], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 636}, "TestCacheServiceConstants.test_cache_prefixes": {"executed_lines": [664, 666, 667, 668], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 662}, "TestCacheServiceConstants.test_default_ttl_values": {"executed_lines": [672, 674, 675, 676, 677], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 15, 18, 32, 44, 59, 62, 63, 82, 83, 95, 96, 117, 118, 133, 136, 137, 155, 156, 176, 179, 180, 198, 199, 217, 218, 239, 240, 261, 264, 265, 283, 284, 305, 308, 309, 327, 328, 350, 353, 354, 372, 373, 391, 392, 411, 414, 415, 440, 456, 473, 476, 477, 495, 496, 497, 517, 518, 537, 540, 541, 561, 562, 583, 586, 587, 611, 614, 615, 616, 635, 636, 659, 662, 670, 680], "summary": {"covered_lines": 81, "num_statements": 82, "percent_covered": 98.78048780487805, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.78048780487805, "percent_statements_covered_display": "99"}, "missing_lines": [681], "excluded_lines": [], "start_line": 1}}, "classes": {"TestCacheService": {"executed_lines": [20, 21, 22, 23, 24, 26, 28, 30, 34, 35, 36, 38, 40, 42, 46, 47, 48, 50, 52, 54, 56], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestCacheServiceJobStatus": {"executed_lines": [65, 66, 67, 68, 69, 71, 72, 74, 76, 77, 78, 80, 85, 86, 87, 89, 91, 93, 98, 99, 100, 101, 102, 104, 105, 107, 109, 110, 111, 113, 115, 120, 121, 122, 124, 126, 128, 130], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "TestCacheServiceProgress": {"executed_lines": [139, 140, 141, 142, 144, 145, 147, 149, 150, 151, 153, 158, 159, 160, 161, 162, 164, 165, 167, 169, 170, 171, 173], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestCacheServiceModAnalysis": {"executed_lines": [182, 183, 184, 185, 187, 188, 190, 192, 193, 194, 196, 201, 202, 203, 204, 206, 207, 209, 211, 212, 213, 215, 220, 221, 222, 223, 225, 226, 228, 230, 231, 232, 234, 236, 237, 242, 243, 244, 245, 247, 248, 250, 252, 253, 254, 256, 258], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestCacheServiceConversionResult": {"executed_lines": [267, 268, 269, 270, 272, 273, 275, 277, 278, 279, 281, 286, 287, 288, 289, 291, 292, 294, 296, 297, 298, 300, 302], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "TestCacheServiceAssetConversion": {"executed_lines": [311, 312, 313, 314, 316, 317, 319, 321, 322, 323, 325, 330, 331, 332, 333, 334, 336, 337, 339, 341, 342, 343, 345, 347], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestCacheServiceInvalidation": {"executed_lines": [356, 357, 358, 359, 361, 362, 364, 366, 367, 368, 370, 375, 376, 377, 378, 380, 381, 383, 385, 386, 387, 389, 394, 395, 396, 397, 399, 400, 402, 404, 405, 406, 408], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestCacheServiceStats": {"executed_lines": [417, 418, 420, 421, 423, 424, 425, 427, 428, 430, 432, 433, 434, 436, 438, 442, 443, 444, 446, 448, 449, 450, 452, 454, 458, 459, 460, 462, 464, 465, 466, 468, 470], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "TestCacheServiceExport": {"executed_lines": [479, 480, 481, 482, 484, 485, 487, 489, 490, 491, 493, 520, 521, 522, 523, 525, 526, 528, 530, 531, 532, 534], "summary": {"covered_lines": 22, "num_statements": 34, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 64.70588235294117, "percent_statements_covered_display": "65"}, "missing_lines": [499, 500, 501, 503, 504, 506, 508, 509, 510, 512, 514, 515], "excluded_lines": [], "start_line": 473}, "TestCacheServiceHashBased": {"executed_lines": [543, 544, 545, 546, 548, 549, 551, 553, 554, 555, 557, 559, 564, 565, 566, 567, 569, 570, 572, 574, 575, 576, 578, 580], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537}, "TestCacheServiceClear": {"executed_lines": [589, 590, 592, 595, 596, 597, 599, 600, 602, 604, 605, 606, 608], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [593], "excluded_lines": [], "start_line": 583}, "TestCacheServiceAIEngine": {"executed_lines": [638, 639, 640, 641, 642, 644, 645, 647, 649, 650, 651, 653, 656], "summary": {"covered_lines": 13, "num_statements": 24, "percent_covered": 54.166666666666664, "percent_covered_display": "54", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 54.166666666666664, "percent_statements_covered_display": "54"}, "missing_lines": [618, 619, 622, 623, 624, 626, 627, 628, 630, 632, 633], "excluded_lines": [], "start_line": 611}, "TestCacheServiceConstants": {"executed_lines": [664, 666, 667, 668, 672, 674, 675, 676, 677], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 659}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 15, 18, 32, 44, 59, 62, 63, 82, 83, 95, 96, 117, 118, 133, 136, 137, 155, 156, 176, 179, 180, 198, 199, 217, 218, 239, 240, 261, 264, 265, 283, 284, 305, 308, 309, 327, 328, 350, 353, 354, 372, 373, 391, 392, 411, 414, 415, 440, 456, 473, 476, 477, 495, 496, 497, 517, 518, 537, 540, 541, 561, 562, 583, 586, 587, 611, 614, 615, 616, 635, 636, 659, 662, 670, 680], "summary": {"covered_lines": 81, "num_statements": 82, "percent_covered": 98.78048780487805, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.78048780487805, "percent_statements_covered_display": "99"}, "missing_lines": [681], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_comprehensive_report_generator.py": {"executed_lines": [9, 10, 11, 13, 14, 32, 33, 35, 134, 135, 137, 140, 143, 145, 146, 148, 149, 150, 151, 152, 154, 156, 157, 158, 160, 161, 164, 167, 169, 179, 180, 182, 184, 194, 195, 196, 198, 200, 210, 211, 214, 217, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 233, 234, 235, 237, 239, 249, 250, 252, 254, 264, 265, 266, 267, 268, 271, 274, 276, 280, 281, 282, 283, 286, 287, 288, 289, 290, 291, 294, 295, 297, 300, 301, 302, 305, 309, 310, 313, 314, 315, 317, 320, 321, 322, 325, 326, 327, 330, 331, 332, 335, 338, 340, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 358, 359, 362, 365, 367, 371, 372, 373, 374, 375, 376, 379, 380, 382, 384, 399, 401, 402, 403, 406, 409, 411, 412, 415, 416, 417, 420, 421, 422, 423, 426, 427, 428, 431, 432, 433, 435, 437, 438, 440, 443, 444, 445, 446, 447, 450, 451, 454, 455, 457, 459, 460, 462, 464, 465, 466, 467, 470, 473, 475, 484, 486, 487, 488, 490, 492, 495, 497, 498, 500, 502, 509, 510, 513, 515, 519, 522, 523, 525, 527, 530, 533, 534, 535, 536, 537, 540, 541, 544, 545, 548, 549], "summary": {"covered_lines": 207, "num_statements": 208, "percent_covered": 99.51923076923077, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.51923076923077, "percent_statements_covered_display": "99"}, "missing_lines": [512], "excluded_lines": [], "functions": {"sample_conversion_result": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "report_generator": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestReportMetadata.test_create_report_metadata": {"executed_lines": [145, 146, 148, 149, 150, 151, 152], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "TestReportMetadata.test_create_report_metadata_with_custom_id": {"executed_lines": [156, 157, 158, 160, 161], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestQualityScore.test_calculate_quality_score_perfect": {"executed_lines": [169, 179, 180], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestQualityScore.test_calculate_quality_score_mixed": {"executed_lines": [184, 194, 195, 196], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "TestQualityScore.test_calculate_quality_score_no_features": {"executed_lines": [200, 210, 211], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "TestSummaryReportGeneration.test_generate_summary_report": {"executed_lines": [219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 233, 234, 235], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestSummaryReportGeneration.test_generate_recommended_actions_excellent": {"executed_lines": [239, 249, 250], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "TestSummaryReportGeneration.test_generate_recommended_actions_needs_work": {"executed_lines": [254, 264, 265, 266, 267, 268], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "TestFeatureAnalysisGeneration.test_generate_feature_analysis": {"executed_lines": [276, 280, 281, 282, 283, 286, 287, 288, 289, 290, 291, 294, 295], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestFeatureAnalysisGeneration.test_calculate_compatibility_score": {"executed_lines": [300, 301, 302, 305, 309, 310, 313, 314, 315], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "TestFeatureAnalysisGeneration.test_categorize_feature": {"executed_lines": [320, 321, 322, 325, 326, 327, 330, 331, 332], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestAssumptionsReportGeneration.test_generate_assumptions_report": {"executed_lines": [340, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 358, 359], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 338}, "TestDeveloperLogGeneration.test_generate_developer_log": {"executed_lines": [367, 371, 372, 373, 374, 375, 376, 379, 380], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestDeveloperLogGeneration.test_identify_optimizations": {"executed_lines": [384, 399, 401, 402, 403], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 382}, "TestInteractiveReportGeneration.test_create_interactive_report": {"executed_lines": [411, 412, 415, 416, 417, 420, 421, 422, 423, 426, 427, 428, 431, 432, 433], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 409}, "TestInteractiveReportGeneration.test_report_to_dict": {"executed_lines": [437, 438, 440, 443, 444, 445, 446, 447, 450, 451, 454, 455], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "TestInteractiveReportGeneration.test_report_to_json": {"executed_lines": [459, 460, 462, 464, 465, 466, 467], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 457}, "TestEdgeCases.test_empty_conversion_result": {"executed_lines": [475, 484, 486, 487, 488], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "TestEdgeCases.test_missing_fields": {"executed_lines": [492, 495, 497, 498], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "TestEdgeCases.test_invalid_data_types": {"executed_lines": [502, 509, 510, 513, 515], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [512], "excluded_lines": [], "start_line": 500}, "TestReportGenerationIntegration.test_full_workflow_integration": {"executed_lines": [525, 527, 530, 533, 534, 535, 536, 537, 540, 541, 544, 545, 548, 549], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523}, "": {"executed_lines": [9, 10, 11, 13, 14, 32, 33, 134, 135, 140, 143, 154, 164, 167, 182, 198, 214, 217, 237, 252, 271, 274, 297, 317, 335, 338, 362, 365, 382, 406, 409, 435, 457, 470, 473, 490, 500, 519, 522, 523], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestReportMetadata": {"executed_lines": [145, 146, 148, 149, 150, 151, 152, 156, 157, 158, 160, 161], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestQualityScore": {"executed_lines": [169, 179, 180, 184, 194, 195, 196, 200, 210, 211], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestSummaryReportGeneration": {"executed_lines": [219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 233, 234, 235, 239, 249, 250, 254, 264, 265, 266, 267, 268], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "TestFeatureAnalysisGeneration": {"executed_lines": [276, 280, 281, 282, 283, 286, 287, 288, 289, 290, 291, 294, 295, 300, 301, 302, 305, 309, 310, 313, 314, 315, 320, 321, 322, 325, 326, 327, 330, 331, 332], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "TestAssumptionsReportGeneration": {"executed_lines": [340, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 358, 359], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestDeveloperLogGeneration": {"executed_lines": [367, 371, 372, 373, 374, 375, 376, 379, 380, 384, 399, 401, 402, 403], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestInteractiveReportGeneration": {"executed_lines": [411, 412, 415, 416, 417, 420, 421, 422, 423, 426, 427, 428, 431, 432, 433, 437, 438, 440, 443, 444, 445, 446, 447, 450, 451, 454, 455, 459, 460, 462, 464, 465, 466, 467], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 406}, "TestEdgeCases": {"executed_lines": [475, 484, 486, 487, 488, 492, 495, 497, 498, 502, 509, 510, 513, 515], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [512], "excluded_lines": [], "start_line": 470}, "TestReportGenerationIntegration": {"executed_lines": [525, 527, 530, 533, 534, 535, 536, 537, 540, 541, 544, 545, 548, 549], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519}, "": {"executed_lines": [9, 10, 11, 13, 14, 32, 33, 35, 134, 135, 137, 140, 143, 154, 164, 167, 182, 198, 214, 217, 237, 252, 271, 274, 297, 317, 335, 338, 362, 365, 382, 406, 409, 435, 457, 470, 473, 490, 500, 519, 522, 523], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_failure_analysis_coverage.py": {"executed_lines": [5, 6, 7, 9, 23, 26, 28, 29, 30, 31, 33, 35, 36, 37, 38, 39, 40, 41, 42, 45, 48, 50, 51, 53, 55, 56, 58, 60, 61, 63, 65, 66, 68, 70, 71, 73, 75, 76, 78, 80, 81, 83, 85, 86, 88, 90, 91, 94, 97, 99, 100, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 125, 127, 129, 130, 132, 134, 135, 137, 139, 140, 142, 144, 145, 147, 149, 150, 152, 154, 155, 157, 159, 160, 162, 164, 165, 167, 169, 170, 172, 174, 175, 177, 179, 180, 183, 186, 188, 198, 199, 200, 201, 203, 205, 216, 218, 219, 220, 222, 224, 228, 239, 241, 242, 245, 248, 250, 251, 254, 255, 261, 262, 264, 266, 269, 270, 281, 282, 283, 285, 287, 288, 291, 292, 296, 298, 300, 301, 304, 305, 309, 310, 313, 316, 318, 321, 322, 324, 325, 326, 329, 332, 334, 337, 338, 345, 348, 351, 353, 354, 355, 357, 359, 360, 362, 364, 365, 367, 369, 370, 372, 374, 375, 377, 379, 380, 382, 384, 385, 387, 389, 390, 392, 394, 395, 398, 401, 403, 407, 408, 409, 410, 412, 414, 424, 425, 426, 427, 429, 431, 441, 442, 443, 444, 445, 446, 447, 448, 450, 453, 459, 462, 464, 466, 478, 479, 480], "summary": {"covered_lines": 221, "num_statements": 221, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestEnums.test_failure_severity_values": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestEnums.test_failure_source_values": {"executed_lines": [35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestDetermineFailureSeverity.test_critical_with_high_retry_count": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestDetermineFailureSeverity.test_critical_category_with_retry": {"executed_lines": [55, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestDetermineFailureSeverity.test_critical_category_no_retry": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestDetermineFailureSeverity.test_high_category_with_retry": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestDetermineFailureSeverity.test_high_category_no_retry": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestDetermineFailureSeverity.test_medium_category": {"executed_lines": [75, 76], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestDetermineFailureSeverity.test_network_error_medium": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestDetermineFailureSeverity.test_unknown_category_low": {"executed_lines": [85, 86], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestDetermineFailureSeverity.test_asset_error_high": {"executed_lines": [90, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestDetermineFailureSource.test_file_upload": {"executed_lines": [99, 100], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestDetermineFailureSource.test_file_upload_variation": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestDetermineFailureSource.test_file_parsing": {"executed_lines": [109, 110], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestDetermineFailureSource.test_parsing_variation": {"executed_lines": [114, 115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestDetermineFailureSource.test_mod_analysis": {"executed_lines": [119, 120], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestDetermineFailureSource.test_analysis_variation": {"executed_lines": [124, 125], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestDetermineFailureSource.test_asset_conversion": {"executed_lines": [129, 130], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestDetermineFailureSource.test_asset_variation": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestDetermineFailureSource.test_code_translation": {"executed_lines": [139, 140], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "TestDetermineFailureSource.test_translate_variation": {"executed_lines": [144, 145], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestDetermineFailureSource.test_convert_variation": {"executed_lines": [149, 150], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestDetermineFailureSource.test_packaging": {"executed_lines": [154, 155], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152}, "TestDetermineFailureSource.test_pack_variation": {"executed_lines": [159, 160], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestDetermineFailureSource.test_validation": {"executed_lines": [164, 165], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "TestDetermineFailureSource.test_valid_variation": {"executed_lines": [169, 170], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestDetermineFailureSource.test_unknown_source": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "TestDetermineFailureSource.test_none_stage": {"executed_lines": [179, 180], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestConversionFailure.test_init": {"executed_lines": [188, 198, 199, 200, 201], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestConversionFailure.test_to_dict": {"executed_lines": [205, 216, 218, 219, 220], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestConversionFailure.test_to_dict_with_details": {"executed_lines": [224, 228, 239, 241, 242], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "TestLogConversionFailure.test_basic_logging": {"executed_lines": [250, 251, 254, 255, 261, 262], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248}, "TestLogConversionFailure.test_logging_with_all_params": {"executed_lines": [266, 269, 270, 281, 282, 283], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestLogConversionFailure.test_recovery_suggestions": {"executed_lines": [287, 288, 291, 292, 296], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestLogConversionFailure.test_user_message_generated": {"executed_lines": [300, 301, 304, 305, 309, 310], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "TestLogRetrySuccess.test_log_retry_success": {"executed_lines": [318, 321, 322, 324, 325, 326], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316}, "TestLogRetryFailure.test_log_retry_failure": {"executed_lines": [334, 337, 338, 345], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "TestRecoverySuggestions.test_parse_error_suggestions": {"executed_lines": [353, 354, 355], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestRecoverySuggestions.test_asset_error_suggestions": {"executed_lines": [359, 360], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 357}, "TestRecoverySuggestions.test_logic_error_suggestions": {"executed_lines": [364, 365], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestRecoverySuggestions.test_package_error_suggestions": {"executed_lines": [369, 370], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestRecoverySuggestions.test_validation_error_suggestions": {"executed_lines": [374, 375], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372}, "TestRecoverySuggestions.test_network_error_suggestions": {"executed_lines": [379, 380], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "TestRecoverySuggestions.test_rate_limit_suggestions": {"executed_lines": [384, 385], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 382}, "TestRecoverySuggestions.test_timeout_suggestions": {"executed_lines": [389, 390], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 387}, "TestRecoverySuggestions.test_unknown_error_suggestions": {"executed_lines": [394, 395], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 392}, "TestEdgeCases.test_failure_detail_defaults": {"executed_lines": [403, 407, 408, 409, 410], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestEdgeCases.test_failure_detail_with_all_fields": {"executed_lines": [414, 424, 425, 426, 427], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412}, "TestEdgeCases.test_conversion_failure_with_defaults": {"executed_lines": [431, 441, 442, 443, 444, 445, 446, 447, 448], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429}, "TestEdgeCases.test_severity_ordering": {"executed_lines": [453, 459, 462], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 450}, "TestEdgeCases.test_all_error_categories_have_suggestions": {"executed_lines": [466, 478, 479, 480], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464}, "": {"executed_lines": [5, 6, 7, 9, 23, 26, 33, 45, 48, 53, 58, 63, 68, 73, 78, 83, 88, 94, 97, 102, 107, 112, 117, 122, 127, 132, 137, 142, 147, 152, 157, 162, 167, 172, 177, 183, 186, 203, 222, 245, 248, 264, 285, 298, 313, 316, 329, 332, 348, 351, 357, 362, 367, 372, 377, 382, 387, 392, 398, 401, 412, 429, 450, 464], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestEnums": {"executed_lines": [28, 29, 30, 31, 35, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestDetermineFailureSeverity": {"executed_lines": [50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 90, 91], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestDetermineFailureSource": {"executed_lines": [99, 100, 104, 105, 109, 110, 114, 115, 119, 120, 124, 125, 129, 130, 134, 135, 139, 140, 144, 145, 149, 150, 154, 155, 159, 160, 164, 165, 169, 170, 174, 175, 179, 180], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestConversionFailure": {"executed_lines": [188, 198, 199, 200, 201, 205, 216, 218, 219, 220, 224, 228, 239, 241, 242], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "TestLogConversionFailure": {"executed_lines": [250, 251, 254, 255, 261, 262, 266, 269, 270, 281, 282, 283, 287, 288, 291, 292, 296, 300, 301, 304, 305, 309, 310], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestLogRetrySuccess": {"executed_lines": [318, 321, 322, 324, 325, 326], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313}, "TestLogRetryFailure": {"executed_lines": [334, 337, 338, 345], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestRecoverySuggestions": {"executed_lines": [353, 354, 355, 359, 360, 364, 365, 369, 370, 374, 375, 379, 380, 384, 385, 389, 390, 394, 395], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348}, "TestEdgeCases": {"executed_lines": [403, 407, 408, 409, 410, 414, 424, 425, 426, 427, 431, 441, 442, 443, 444, 445, 446, 447, 448, 453, 459, 462, 466, 478, 479, 480], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 398}, "": {"executed_lines": [5, 6, 7, 9, 23, 26, 33, 45, 48, 53, 58, 63, 68, 73, 78, 83, 88, 94, 97, 102, 107, 112, 117, 122, 127, 132, 137, 142, 147, 152, 157, 162, 167, 172, 177, 183, 186, 203, 222, 245, 248, 264, 285, 298, 313, 316, 329, 332, 348, 351, 357, 362, 367, 372, 377, 382, 387, 392, 398, 401, 412, 429, 450, 464], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_parser_coverage.py": {"executed_lines": [5, 6, 7, 8, 9, 10, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 31, 32, 33, 35, 36, 38, 39, 40, 41, 44, 45, 46, 47, 48, 50, 51, 53, 55, 56, 58, 59, 60, 62, 64, 66, 67, 69, 70, 71, 73, 74, 76, 77, 80, 81, 82, 83, 85, 86, 87, 88, 89, 90, 93, 96, 102, 109, 110, 111, 112, 113, 122, 123, 126, 129, 130, 133, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 153, 154, 155, 157, 159, 165, 167, 168, 170, 171, 173, 174, 176, 178, 180, 181, 182, 183, 184, 185, 187, 188, 189, 190, 191, 193, 194, 198, 199, 201, 202, 204, 205, 206, 207, 208, 210, 211, 215, 216, 218, 219], "summary": {"covered_lines": 127, "num_statements": 128, "percent_covered": 99.21875, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.21875, "percent_statements_covered_display": "99"}, "missing_lines": [124], "excluded_lines": [], "functions": {"TestParseJsonFile.test_parse_json_file_success": {"executed_lines": [22, 23, 24, 25, 26], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestParseJsonFile.test_parse_json_file_not_found": {"executed_lines": [31, 32, 33], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestParseJsonFile.test_parse_json_file_invalid_json": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestFindPackFolder.test_find_pack_folder_success": {"executed_lines": [50, 51, 53, 55, 56], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestFindPackFolder.test_find_pack_folder_fallback_to_root": {"executed_lines": [62, 64, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestFindPackFolder.test_find_pack_folder_not_found": {"executed_lines": [73, 74, 76, 77], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestTransformPackToAddonData.mock_uuid": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestTransformPackToAddonData.test_transform_success_full": {"executed_lines": [93, 96, 102, 109, 126, 129, 130, 133, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestTransformPackToAddonData.test_transform_success_full.parse_json_side_effect": {"executed_lines": [110, 111, 112, 113, 122, 123], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [124], "excluded_lines": [], "start_line": 109}, "TestTransformPackToAddonData.test_transform_rp_only": {"executed_lines": [157, 159, 165, 167, 168, 170, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestTransformPackToAddonData.test_transform_nothing_found": {"executed_lines": [176, 178, 180, 181, 182, 183, 184, 185], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestTransformPackToAddonData.test_transform_block_missing_identifier": {"executed_lines": [193, 194, 198, 199, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestTransformPackToAddonData.test_transform_block_missing_minecraft_block": {"executed_lines": [210, 211, 215, 216, 218, 219], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 18, 19, 20, 28, 29, 35, 36, 44, 45, 46, 47, 48, 58, 59, 60, 69, 70, 71, 80, 81, 82, 85, 86, 87, 88, 89, 90, 153, 154, 155, 173, 174, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestParseJsonFile": {"executed_lines": [22, 23, 24, 25, 26, 31, 32, 33, 38, 39, 40, 41], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestFindPackFolder": {"executed_lines": [50, 51, 53, 55, 56, 62, 64, 66, 67, 73, 74, 76, 77], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestTransformPackToAddonData": {"executed_lines": [83, 93, 96, 102, 109, 110, 111, 112, 113, 122, 123, 126, 129, 130, 133, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 157, 159, 165, 167, 168, 170, 171, 176, 178, 180, 181, 182, 183, 184, 185, 193, 194, 198, 199, 201, 202, 210, 211, 215, 216, 218, 219], "summary": {"covered_lines": 54, "num_statements": 55, "percent_covered": 98.18181818181819, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.18181818181819, "percent_statements_covered_display": "98"}, "missing_lines": [124], "excluded_lines": [], "start_line": 80}, "": {"executed_lines": [5, 6, 7, 8, 9, 10, 18, 19, 20, 28, 29, 35, 36, 44, 45, 46, 47, 48, 58, 59, 60, 69, 70, 71, 80, 81, 82, 85, 86, 87, 88, 89, 90, 153, 154, 155, 173, 174, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_parser_service.py": {"executed_lines": [5, 6, 7, 14, 15, 16, 17, 18, 20, 21, 23, 25, 26, 28, 29, 30, 32, 35, 37, 39, 40, 41, 42, 44, 45, 46, 48, 50, 53, 54, 56, 58, 61, 62, 63, 64, 67, 68, 70], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestParseJsonFile.test_parse_json_file_success": {"executed_lines": [20, 21, 23, 25, 26], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestParseJsonFile.test_parse_json_file_not_found": {"executed_lines": [32, 35, 37], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestParseJsonFile.test_parse_json_file_invalid_json": {"executed_lines": [44, 45, 46, 48, 50], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestFindPackFolder.test_find_pack_folder_returns_path": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestFindPackFolder.test_find_pack_folder_behavior_pack_type": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestTransformPackToAddonData.test_transform_pack_to_addon_data_exists": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "": {"executed_lines": [5, 6, 7, 14, 15, 16, 17, 18, 28, 29, 30, 39, 40, 41, 42, 53, 54, 58, 67, 68], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestParseJsonFile": {"executed_lines": [20, 21, 23, 25, 26, 32, 35, 37, 44, 45, 46, 48, 50], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestFindPackFolder": {"executed_lines": [56, 61, 62, 63, 64], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestTransformPackToAddonData": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "": {"executed_lines": [5, 6, 7, 14, 15, 16, 17, 18, 28, 29, 30, 39, 40, 41, 42, 53, 54, 58, 67, 68], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_queue_service.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 33, 35, 36, 39, 40, 41, 42, 43, 46, 48, 49, 50, 51, 59, 60, 62, 64, 65, 67, 69, 70, 71, 73, 75, 77, 78, 79, 80, 83, 85, 86, 87, 89, 90, 91, 92, 93, 95, 98, 99, 102, 103, 105, 106, 107, 108, 110, 112, 113, 114, 116, 117, 118, 119, 126, 127, 128, 129, 131, 132, 133, 135, 136, 138, 139, 140, 141, 142], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_redis": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "queue": {"executed_lines": [22, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "test_enqueue_job_success": {"executed_lines": [28, 29, 30, 31, 33, 35, 36, 39, 40, 41, 42, 43, 46], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "test_dequeue_job_success": {"executed_lines": [50, 51, 59, 60, 62, 64, 65, 67], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "test_dequeue_job_empty": {"executed_lines": [71, 73, 75], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "test_update_progress": {"executed_lines": [79, 80, 83, 85, 86, 87], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "test_complete_job": {"executed_lines": [91, 92, 93, 95, 98, 99, 102, 103], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "test_fail_job": {"executed_lines": [107, 108, 110, 112, 113, 114], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "test_get_job_result_success": {"executed_lines": [118, 119, 126, 127, 128, 129], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "test_get_job_result_not_found": {"executed_lines": [133, 135, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "test_close": {"executed_lines": [140, 141, 142], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 20, 21, 26, 27, 48, 49, 69, 70, 77, 78, 89, 90, 105, 106, 116, 117, 131, 132, 138, 139], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 33, 35, 36, 39, 40, 41, 42, 43, 46, 48, 49, 50, 51, 59, 60, 62, 64, 65, 67, 69, 70, 71, 73, 75, 77, 78, 79, 80, 83, 85, 86, 87, 89, 90, 91, 92, 93, 95, 98, 99, 102, 103, 105, 106, 107, 108, 110, 112, 113, 114, 116, 117, 118, 119, 126, 127, 128, 129, 131, 132, 133, 135, 136, 138, 139, 140, 141, 142], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_report_service.py": {"executed_lines": [5, 6, 7, 14, 15, 17, 18, 19, 20, 22, 24, 25, 26, 27, 28, 29, 30, 32, 34, 35, 36, 37, 40, 41, 42, 44, 45, 46, 49, 50, 51, 53, 54, 55, 56], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestConversionReport.test_conversion_report_init": {"executed_lines": [17, 18, 19, 20], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestConversionReport.test_conversion_report_has_attributes": {"executed_lines": [24, 25, 26, 27, 28, 29, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestConversionReport.test_conversion_report_add_stage": {"executed_lines": [34, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestConversionReportGenerator.test_conversion_report_generator_init": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestModuleFunctions.test_get_report_generator": {"executed_lines": [53, 54, 55, 56], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "": {"executed_lines": [5, 6, 7, 14, 15, 22, 32, 40, 41, 42, 49, 50, 51], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionReport": {"executed_lines": [17, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 37], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestConversionReportGenerator": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestModuleFunctions": {"executed_lines": [53, 54, 55, 56], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "": {"executed_lines": [5, 6, 7, 14, 15, 22, 32, 40, 41, 42, 49, 50, 51], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversion_service_coverage.py": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 23, 24, 25, 27, 28, 29, 30, 31, 34, 35, 36, 38, 40, 44, 48, 49, 50, 51, 53, 54, 55, 57, 61, 62, 66, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 83, 84, 85, 86, 88, 89, 90, 91, 93, 94, 99, 100, 102, 103, 104, 106, 110, 111, 117, 118, 120], "summary": {"covered_lines": 74, "num_statements": 75, "percent_covered": 98.66666666666667, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.66666666666667, "percent_statements_covered_display": "99"}, "missing_lines": [121], "excluded_lines": [], "functions": {"TestConversionServiceCoverage.service": {"executed_lines": [11, 12, 13, 14, 15], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TestConversionServiceCoverage.test_transfer_file_to_ai_engine": {"executed_lines": [19, 23, 24, 25], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestConversionServiceCoverage.test_process_conversion_success": {"executed_lines": [29, 30, 31, 34, 38, 40, 44, 48, 49, 50, 51], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestConversionServiceCoverage.test_process_conversion_success.mock_poll": {"executed_lines": [35, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestConversionServiceCoverage.test_process_conversion_failure_on_start": {"executed_lines": [55, 57, 61, 62, 66], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestConversionServiceCoverage.test_poll_and_broadcast_error": {"executed_lines": [70, 72, 73, 74], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestConversionServiceCoverage.test_handle_error": {"executed_lines": [78, 79, 80, 81], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestConversionServiceCoverage.test_get_conversion_service": {"executed_lines": [84, 85, 86], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestConversionServiceCoverage.test_process_conversion_task": {"executed_lines": [90, 91, 93, 94, 99, 100], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestConversionServiceCoverage.test_process_conversion_cancelled": {"executed_lines": [104, 106, 110, 111, 117, 118], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 17, 18, 27, 28, 53, 54, 68, 69, 76, 77, 83, 88, 89, 102, 103, 120], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [121], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionServiceCoverage": {"executed_lines": [11, 12, 13, 14, 15, 19, 23, 24, 25, 29, 30, 31, 34, 35, 36, 38, 40, 44, 48, 49, 50, 51, 55, 57, 61, 62, 66, 70, 72, 73, 74, 78, 79, 80, 81, 84, 85, 86, 90, 91, 93, 94, 99, 100, 104, 106, 110, 111, 117, 118], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 17, 18, 27, 28, 53, 54, 68, 69, 76, 77, 83, 88, 89, 102, 103, 120], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [121], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_conversions_helpers.py": {"executed_lines": [10, 11, 12, 13, 15, 22, 25, 27, 28, 30, 32, 33, 35, 37, 39, 41, 43, 44, 46, 48, 49, 50, 52, 54, 55, 57, 59, 60, 62, 64, 65, 67, 69, 70, 71, 73, 75, 76, 78, 80, 81, 84, 87, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 110, 111, 112, 113, 116, 119, 121, 122, 123, 125, 127, 128, 129, 131, 133, 134, 136, 138, 139, 140, 142, 144, 145, 147, 149, 150], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSanitizeFilename.test_simple_filename": {"executed_lines": [27, 28], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestSanitizeFilename.test_filename_with_path": {"executed_lines": [32, 33], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestSanitizeFilename.test_filename_with_backslash_path": {"executed_lines": [37, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestSanitizeFilename.test_path_traversal_attempt": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestSanitizeFilename.test_url_encoded_path_traversal": {"executed_lines": [48, 49, 50], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestSanitizeFilename.test_empty_filename": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestSanitizeFilename.test_only_special_characters": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestSanitizeFilename.test_filename_starting_with_dot": {"executed_lines": [64, 65], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "TestSanitizeFilename.test_dangerous_characters_removed": {"executed_lines": [69, 70, 71], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestSanitizeFilename.test_preserves_safe_extensions": {"executed_lines": [75, 76], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestSanitizeFilename.test_underscore_hyphen_preserved": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestValidatePathSafe.test_safe_path_inside_base": {"executed_lines": [89, 90, 91, 92], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestValidatePathSafe.test_path_outside_base": {"executed_lines": [96, 97, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestValidatePathSafe.test_absolute_path_outside_base": {"executed_lines": [103, 104, 105, 106], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestValidatePathSafe.test_path_with_dot_outside_base": {"executed_lines": [110, 111, 112, 113], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestValidateFileType.test_valid_jar_file": {"executed_lines": [121, 122, 123], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestValidateFileType.test_valid_zip_file": {"executed_lines": [127, 128, 129], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestValidateFileType.test_case_insensitive_extension": {"executed_lines": [133, 134], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "TestValidateFileType.test_invalid_exe_extension": {"executed_lines": [138, 139, 140], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestValidateFileType.test_invalid_txt_extension": {"executed_lines": [144, 145], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestValidateFileType.test_invalid_py_extension": {"executed_lines": [149, 150], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [10, 11, 12, 13, 15, 22, 25, 30, 35, 41, 46, 52, 57, 62, 67, 73, 78, 84, 87, 94, 101, 108, 116, 119, 125, 131, 136, 142, 147], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSanitizeFilename": {"executed_lines": [27, 28, 32, 33, 37, 39, 43, 44, 48, 49, 50, 54, 55, 59, 60, 64, 65, 69, 70, 71, 75, 76, 80, 81], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestValidatePathSafe": {"executed_lines": [89, 90, 91, 92, 96, 97, 98, 99, 103, 104, 105, 106, 110, 111, 112, 113], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestValidateFileType": {"executed_lines": [121, 122, 123, 127, 128, 129, 133, 134, 138, 139, 140, 144, 145, 149, 150], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "": {"executed_lines": [10, 11, 12, 13, 15, 22, 25, 30, 35, 41, 46, 52, 57, 62, 67, 73, 78, 84, 87, 94, 101, 108, 116, 119, 125, 131, 136, 142, 147], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_core_api_extra_coverage.py": {"executed_lines": [8, 9, 10, 13, 16, 18, 19, 21, 22, 25, 27, 28, 30, 32, 33, 35, 36, 39, 41, 42, 44, 46, 47, 49, 57, 59, 60, 62, 70, 72, 73, 75, 83, 85, 86, 88, 97, 99, 100, 102, 112, 114, 115, 117, 125, 127, 128, 130, 138, 140, 141, 143, 151, 153, 154, 156, 164, 166, 167, 169, 170, 172, 174, 175, 178, 181, 183, 184, 186, 190, 192, 193, 195, 196, 197, 198, 204, 206, 207, 215, 216, 220, 222, 223, 225, 226, 227, 228, 234, 236, 237, 239, 240, 241, 242, 248, 250, 251, 253, 254, 255, 261, 263, 264, 272, 273, 277, 279, 280, 286, 287, 291, 293, 294, 300, 301, 305, 307, 308, 313, 314, 319, 322, 324, 325, 327, 331, 333, 334, 336, 341, 343, 344, 348, 350, 351, 353, 354, 355, 360, 363, 365, 366, 368, 376, 378, 379, 381, 391, 394, 396, 397, 399, 400, 401, 402, 404, 406, 408, 409, 411, 413, 414, 419, 420], "summary": {"covered_lines": 165, "num_statements": 307, "percent_covered": 53.74592833876221, "percent_covered_display": "54", "missing_lines": 142, "excluded_lines": 0, "percent_statements_covered": 53.74592833876221, "percent_statements_covered_display": "54"}, "missing_lines": [23, 24, 26, 37, 38, 40, 50, 51, 52, 53, 54, 55, 63, 64, 65, 66, 67, 68, 76, 77, 78, 79, 80, 81, 89, 90, 91, 92, 93, 94, 95, 103, 104, 105, 106, 107, 108, 109, 110, 118, 119, 120, 121, 122, 123, 131, 132, 133, 134, 135, 136, 144, 145, 146, 147, 148, 149, 157, 158, 159, 160, 161, 162, 171, 173, 187, 188, 199, 200, 201, 202, 209, 210, 211, 212, 213, 214, 217, 218, 229, 230, 231, 232, 243, 244, 245, 246, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 274, 275, 282, 283, 284, 285, 288, 289, 296, 297, 298, 299, 302, 303, 310, 311, 312, 315, 316, 328, 329, 345, 346, 356, 357, 369, 370, 371, 372, 373, 374, 382, 383, 384, 385, 386, 387, 388, 405, 407, 416, 417, 418, 421, 422], "excluded_lines": [], "functions": {"TestSecrets.test_get_secret_found": {"executed_lines": [18, 19, 21, 22, 25, 27, 28], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [23, 24, 26], "excluded_lines": [], "start_line": 16}, "TestSecrets.test_get_secret_not_found": {"executed_lines": [32, 33, 35, 36, 39, 41, 42], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [37, 38, 40], "excluded_lines": [], "start_line": 30}, "TestSecrets.test_set_secret": {"executed_lines": [46, 47, 49], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [50, 51, 52, 53, 54, 55], "excluded_lines": [], "start_line": 44}, "TestSecrets.test_delete_secret": {"executed_lines": [59, 60, 62], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [63, 64, 65, 66, 67, 68], "excluded_lines": [], "start_line": 57}, "TestSecrets.test_list_secrets": {"executed_lines": [72, 73, 75], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [76, 77, 78, 79, 80, 81], "excluded_lines": [], "start_line": 70}, "TestSecrets.test_load_secrets_from_env": {"executed_lines": [85, 86, 88], "summary": {"covered_lines": 3, "num_statements": 10, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30"}, "missing_lines": [89, 90, 91, 92, 93, 94, 95], "excluded_lines": [], "start_line": 83}, "TestSecrets.test_load_secrets_from_file": {"executed_lines": [99, 100, 102], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27"}, "missing_lines": [103, 104, 105, 106, 107, 108, 109, 110], "excluded_lines": [], "start_line": 97}, "TestSecrets.test_validate_secret": {"executed_lines": [114, 115, 117], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [118, 119, 120, 121, 122, 123], "excluded_lines": [], "start_line": 112}, "TestSecrets.test_encrypt_secret": {"executed_lines": [127, 128, 130], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [131, 132, 133, 134, 135, 136], "excluded_lines": [], "start_line": 125}, "TestSecrets.test_decrypt_secret": {"executed_lines": [140, 141, 143], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [144, 145, 146, 147, 148, 149], "excluded_lines": [], "start_line": 138}, "TestSecrets.test_rotate_secret": {"executed_lines": [153, 154, 156], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [157, 158, 159, 160, 161, 162], "excluded_lines": [], "start_line": 151}, "TestSecrets.test_get_secret_with_default": {"executed_lines": [166, 167, 169, 170, 172, 174, 175], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [171, 173], "excluded_lines": [], "start_line": 164}, "TestAuth.test_auth_init": {"executed_lines": [183, 184, 186], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [187, 188], "excluded_lines": [], "start_line": 181}, "TestAuth.test_create_access_token": {"executed_lines": [192, 193, 195, 196, 197, 198], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [199, 200, 201, 202], "excluded_lines": [], "start_line": 190}, "TestAuth.test_verify_access_token": {"executed_lines": [206, 207, 215, 216], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [209, 210, 211, 212, 213, 214, 217, 218], "excluded_lines": [], "start_line": 204}, "TestAuth.test_hash_password": {"executed_lines": [222, 223, 225, 226, 227, 228], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [229, 230, 231, 232], "excluded_lines": [], "start_line": 220}, "TestAuth.test_verify_password": {"executed_lines": [236, 237, 239, 240, 241, 242], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [243, 244, 245, 246], "excluded_lines": [], "start_line": 234}, "TestAuth.test_create_refresh_token": {"executed_lines": [250, 251, 253, 254, 255], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 55.55555555555556, "percent_statements_covered_display": "56"}, "missing_lines": [256, 257, 258, 259], "excluded_lines": [], "start_line": 248}, "TestAuth.test_get_current_user": {"executed_lines": [263, 264, 272, 273], "summary": {"covered_lines": 4, "num_statements": 12, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [266, 267, 268, 269, 270, 271, 274, 275], "excluded_lines": [], "start_line": 261}, "TestAuth.test_authenticate_user": {"executed_lines": [279, 280, 286, 287], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [282, 283, 284, 285, 288, 289], "excluded_lines": [], "start_line": 277}, "TestAuth.test_create_token_pair": {"executed_lines": [293, 294, 300, 301], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [296, 297, 298, 299, 302, 303], "excluded_lines": [], "start_line": 291}, "TestAuth.test_validate_token_scope": {"executed_lines": [307, 308, 313, 314], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [310, 311, 312, 315, 316], "excluded_lines": [], "start_line": 305}, "TestHealthAPI.test_health_module_imports": {"executed_lines": [324, 325, 327], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [328, 329], "excluded_lines": [], "start_line": 322}, "TestHealthAPI.test_health_models": {"executed_lines": [333, 334, 336, 341, 343, 344], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [345, 346], "excluded_lines": [], "start_line": 331}, "TestHealthAPI.test_health_functions_exist": {"executed_lines": [350, 351, 353, 354, 355], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [356, 357], "excluded_lines": [], "start_line": 348}, "TestSecretsAdvanced.test_bulk_set_secrets": {"executed_lines": [365, 366, 368], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [369, 370, 371, 372, 373, 374], "excluded_lines": [], "start_line": 363}, "TestSecretsAdvanced.test_secret_exists": {"executed_lines": [378, 379, 381], "summary": {"covered_lines": 3, "num_statements": 10, "percent_covered": 30.0, "percent_covered_display": "30", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 30.0, "percent_statements_covered_display": "30"}, "missing_lines": [382, 383, 384, 385, 386, 387, 388], "excluded_lines": [], "start_line": 376}, "TestAuthAdvanced.test_token_expiration": {"executed_lines": [396, 397, 399, 400, 401, 402, 404, 406, 408, 409], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [405, 407], "excluded_lines": [], "start_line": 394}, "TestAuthAdvanced.test_revoke_token": {"executed_lines": [413, 414, 419, 420], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [416, 417, 418, 421, 422], "excluded_lines": [], "start_line": 411}, "": {"executed_lines": [8, 9, 10, 13, 16, 30, 44, 57, 70, 83, 97, 112, 125, 138, 151, 164, 178, 181, 190, 204, 220, 234, 248, 261, 277, 291, 305, 319, 322, 331, 348, 360, 363, 376, 391, 394, 411], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecrets": {"executed_lines": [18, 19, 21, 22, 25, 27, 28, 32, 33, 35, 36, 39, 41, 42, 46, 47, 49, 59, 60, 62, 72, 73, 75, 85, 86, 88, 99, 100, 102, 114, 115, 117, 127, 128, 130, 140, 141, 143, 153, 154, 156, 166, 167, 169, 170, 172, 174, 175], "summary": {"covered_lines": 48, "num_statements": 113, "percent_covered": 42.47787610619469, "percent_covered_display": "42", "missing_lines": 65, "excluded_lines": 0, "percent_statements_covered": 42.47787610619469, "percent_statements_covered_display": "42"}, "missing_lines": [23, 24, 26, 37, 38, 40, 50, 51, 52, 53, 54, 55, 63, 64, 65, 66, 67, 68, 76, 77, 78, 79, 80, 81, 89, 90, 91, 92, 93, 94, 95, 103, 104, 105, 106, 107, 108, 109, 110, 118, 119, 120, 121, 122, 123, 131, 132, 133, 134, 135, 136, 144, 145, 146, 147, 148, 149, 157, 158, 159, 160, 161, 162, 171, 173], "excluded_lines": [], "start_line": 13}, "TestAuth": {"executed_lines": [183, 184, 186, 192, 193, 195, 196, 197, 198, 206, 207, 215, 216, 222, 223, 225, 226, 227, 228, 236, 237, 239, 240, 241, 242, 250, 251, 253, 254, 255, 263, 264, 272, 273, 279, 280, 286, 287, 293, 294, 300, 301, 307, 308, 313, 314], "summary": {"covered_lines": 46, "num_statements": 97, "percent_covered": 47.422680412371136, "percent_covered_display": "47", "missing_lines": 51, "excluded_lines": 0, "percent_statements_covered": 47.422680412371136, "percent_statements_covered_display": "47"}, "missing_lines": [187, 188, 199, 200, 201, 202, 209, 210, 211, 212, 213, 214, 217, 218, 229, 230, 231, 232, 243, 244, 245, 246, 256, 257, 258, 259, 266, 267, 268, 269, 270, 271, 274, 275, 282, 283, 284, 285, 288, 289, 296, 297, 298, 299, 302, 303, 310, 311, 312, 315, 316], "excluded_lines": [], "start_line": 178}, "TestHealthAPI": {"executed_lines": [324, 325, 327, 333, 334, 336, 341, 343, 344, 350, 351, 353, 354, 355], "summary": {"covered_lines": 14, "num_statements": 20, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [328, 329, 345, 346, 356, 357], "excluded_lines": [], "start_line": 319}, "TestSecretsAdvanced": {"executed_lines": [365, 366, 368, 378, 379, 381], "summary": {"covered_lines": 6, "num_statements": 19, "percent_covered": 31.57894736842105, "percent_covered_display": "32", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 31.57894736842105, "percent_statements_covered_display": "32"}, "missing_lines": [369, 370, 371, 372, 373, 374, 382, 383, 384, 385, 386, 387, 388], "excluded_lines": [], "start_line": 360}, "TestAuthAdvanced": {"executed_lines": [396, 397, 399, 400, 401, 402, 404, 406, 408, 409, 413, 414, 419, 420], "summary": {"covered_lines": 14, "num_statements": 21, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [405, 407, 416, 417, 418, 421, 422], "excluded_lines": [], "start_line": 391}, "": {"executed_lines": [8, 9, 10, 13, 16, 30, 44, 57, 70, 83, 97, 112, 125, 138, 151, 164, 178, 181, 190, 204, 220, 234, 248, 261, 277, 291, 305, 319, 322, 331, 348, 360, 363, 376, 391, 394, 411], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_core_secrets_targeted.py": {"executed_lines": [7, 8, 9, 10, 13, 16, 18, 20, 21, 23, 25, 27, 29, 30, 32, 34, 36, 38, 39, 42, 45, 47, 49, 50, 52, 54, 56, 57, 59, 61, 63, 64, 65, 67, 69, 71, 72, 73, 74, 76, 78, 80, 81, 82, 83, 86, 89, 91, 93, 95, 96, 97, 99, 101, 103, 104, 106, 108, 110, 112, 113, 115, 117, 119, 121, 123, 124, 126, 128, 130, 132, 134, 135, 136, 138, 139, 141, 142, 144, 146, 148, 149, 150, 152, 154, 157, 160, 162, 164, 166, 174, 176, 177, 178, 180, 182, 184, 186, 193, 194, 197, 199, 202, 205, 207, 209, 210, 212, 215, 218, 220, 222, 223, 225, 228, 231, 233, 235, 237, 238, 241, 244, 246, 248, 250, 251, 254, 257, 259, 261, 262, 264, 265, 267, 269, 271, 272, 274, 276, 279, 282, 284, 286, 288, 290, 292, 294, 296, 299, 302, 304, 306, 308, 310, 312, 314, 316, 319, 322, 324, 326, 328, 330, 332, 334, 336, 339, 342, 344, 346, 348, 351, 354, 356, 358, 359, 361, 363, 365, 367, 369, 370, 372, 374, 375, 378, 381, 383, 385, 395, 396, 399], "summary": {"covered_lines": 192, "num_statements": 194, "percent_covered": 98.96907216494846, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.96907216494846, "percent_statements_covered_display": "99"}, "missing_lines": [195, 400], "excluded_lines": [], "functions": {"TestSecretStr.test_secret_str_repr": {"executed_lines": [18, 20, 21, 23], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestSecretStr.test_secret_str_str": {"executed_lines": [27, 29, 30, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestSecretStr.test_secret_str_value_accessible": {"executed_lines": [36, 38, 39], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestSecretsManagerSettings.test_default_backend_is_local": {"executed_lines": [47, 49, 50], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestSecretsManagerSettings.test_settings_has_backend_attribute": {"executed_lines": [54, 56, 57], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestSecretsManagerSettings.test_settings_has_aws_attributes": {"executed_lines": [61, 63, 64, 65], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "TestSecretsManagerSettings.test_settings_has_vault_attributes": {"executed_lines": [69, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestSecretsManagerSettings.test_settings_has_doppler_attributes": {"executed_lines": [78, 80, 81, 82, 83], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestSecretsManager.test_init_with_default_settings": {"executed_lines": [91, 93, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestSecretsManager.test_init_with_custom_settings": {"executed_lines": [101, 103, 104, 106], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestSecretsManager.test_get_secret_local_backend": {"executed_lines": [110, 112, 113, 115, 117], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestSecretsManager.test_get_secret_with_default": {"executed_lines": [121, 123, 124, 126, 128], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestSecretsManager.test_get_secret_caching": {"executed_lines": [132, 134, 135, 136, 138, 139, 141, 142], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestSecretsManager.test_get_secret_local_none_returns_default": {"executed_lines": [146, 148, 149, 150, 152, 154], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TestSecretsManagerGetAllSecrets.test_get_all_secrets_local_backend": {"executed_lines": [162, 164, 166, 174, 176, 177, 178], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestSecretsManagerGetAllSecrets.test_get_all_secrets_filters_empty": {"executed_lines": [182, 184, 186, 193, 194, 197, 199], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [195], "excluded_lines": [], "start_line": 180}, "TestGetSecretsManager.test_returns_singleton": {"executed_lines": [207, 209, 210, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "TestGetSecretsSettings.test_returns_singleton": {"executed_lines": [220, 222, 223, 225], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "TestGetSecret.test_get_secret_returns_something": {"executed_lines": [233, 235, 237, 238], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231}, "TestSettingsCustomization.test_settings_init": {"executed_lines": [246, 248, 250, 251], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestSecretsManagerBackendInit.test_backend_initialized_flag": {"executed_lines": [259, 261, 262, 264, 265], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestSecretsManagerBackendInit.test_reinitialize_uses_cache": {"executed_lines": [269, 271, 272, 274, 276], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestVaultTokenFromFile.test_vault_url_default_is_localhost": {"executed_lines": [284, 286, 288], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestVaultTokenFromFile.test_vault_settings_have_path": {"executed_lines": [292, 294, 296], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290}, "TestDopplerTokenRequired.test_doppler_project_attribute_exists": {"executed_lines": [304, 306, 308], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "TestDopplerTokenRequired.test_doppler_config_attribute_exists": {"executed_lines": [312, 314, 316], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestAWSGetSecret.test_aws_region_attribute_exists": {"executed_lines": [324, 326, 328], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322}, "TestAWSGetSecret.test_aws_secret_name_attribute_exists": {"executed_lines": [332, 334, 336], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestVaultGetSecret.test_vault_client_attribute": {"executed_lines": [344, 346, 348], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestGetAllSecretsBackends.test_get_all_secrets_local_returns_dict": {"executed_lines": [356, 358, 359, 361, 363], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestGetAllSecretsBackends.test_get_all_secrets_local_returns_expected_keys": {"executed_lines": [367, 369, 370, 372, 374, 375], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestExports.test_all_exports_present": {"executed_lines": [383, 385, 395, 396], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 25, 34, 42, 45, 52, 59, 67, 76, 86, 89, 99, 108, 119, 130, 144, 157, 160, 180, 202, 205, 215, 218, 228, 231, 241, 244, 254, 257, 267, 279, 282, 290, 299, 302, 310, 319, 322, 330, 339, 342, 351, 354, 365, 378, 381, 399], "summary": {"covered_lines": 52, "num_statements": 53, "percent_covered": 98.11320754716981, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.11320754716981, "percent_statements_covered_display": "98"}, "missing_lines": [400], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecretStr": {"executed_lines": [18, 20, 21, 23, 27, 29, 30, 32, 36, 38, 39], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestSecretsManagerSettings": {"executed_lines": [47, 49, 50, 54, 56, 57, 61, 63, 64, 65, 69, 71, 72, 73, 74, 78, 80, 81, 82, 83], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestSecretsManager": {"executed_lines": [91, 93, 95, 96, 97, 101, 103, 104, 106, 110, 112, 113, 115, 117, 121, 123, 124, 126, 128, 132, 134, 135, 136, 138, 139, 141, 142, 146, 148, 149, 150, 152, 154], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestSecretsManagerGetAllSecrets": {"executed_lines": [162, 164, 166, 174, 176, 177, 178, 182, 184, 186, 193, 194, 197, 199], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [195], "excluded_lines": [], "start_line": 157}, "TestGetSecretsManager": {"executed_lines": [207, 209, 210, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "TestGetSecretsSettings": {"executed_lines": [220, 222, 223, 225], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 215}, "TestGetSecret": {"executed_lines": [233, 235, 237, 238], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "TestSettingsCustomization": {"executed_lines": [246, 248, 250, 251], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "TestSecretsManagerBackendInit": {"executed_lines": [259, 261, 262, 264, 265, 269, 271, 272, 274, 276], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestVaultTokenFromFile": {"executed_lines": [284, 286, 288, 292, 294, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestDopplerTokenRequired": {"executed_lines": [304, 306, 308, 312, 314, 316], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestAWSGetSecret": {"executed_lines": [324, 326, 328, 332, 334, 336], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestVaultGetSecret": {"executed_lines": [344, 346, 348], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339}, "TestGetAllSecretsBackends": {"executed_lines": [356, 358, 359, 361, 363, 367, 369, 370, 372, 374, 375], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestExports": {"executed_lines": [383, 385, 395, 396], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 25, 34, 42, 45, 52, 59, 67, 76, 86, 89, 99, 108, 119, 130, 144, 157, 160, 180, 202, 205, 215, 218, 228, 231, 241, 244, 254, 257, 267, 279, 282, 290, 299, 302, 310, 319, 322, 330, 339, 342, 351, 354, 365, 378, 381, 399], "summary": {"covered_lines": 52, "num_statements": 53, "percent_covered": 98.11320754716981, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.11320754716981, "percent_statements_covered_display": "98"}, "missing_lines": [400], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_core_storage_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 20, 22, 23, 26, 29, 31, 32, 33, 35, 37, 38, 39, 41, 43, 44, 45, 47, 49, 50, 52, 54, 55, 58, 61, 63, 64, 65, 66, 67, 69, 71, 72, 73, 76, 79, 80, 82, 83, 85, 86, 88, 89, 96, 97, 98, 100, 101, 103, 104, 111, 113, 114, 116, 117, 124, 126, 127, 129, 130, 137, 139, 140, 142, 143, 150, 151, 152, 153, 154, 157, 160, 161, 163, 164, 166, 167, 169, 170, 177, 178, 180, 181, 183, 184, 186, 187, 189, 190, 197, 198, 200, 201, 203, 204, 211, 212, 215, 218, 219, 221, 222, 224, 225, 227, 234, 235, 237, 238, 240, 241, 243, 244, 246, 253, 254, 255, 258, 261, 262, 264, 265, 267, 268, 270, 271, 273, 274, 276, 277, 278, 281, 284, 285, 287, 288, 290, 291, 293, 294, 295, 296, 297, 298, 299, 301, 302, 304, 311, 312, 314, 316, 317, 319, 321, 322, 325, 328, 329, 331, 332, 334, 335, 337, 344, 345, 346, 347, 348, 350, 351, 353, 354, 357, 360, 361, 363, 364, 367, 368, 377, 378, 380, 381, 384, 385, 396, 397, 399, 400, 404, 405, 410, 411, 414, 417, 418, 420, 421, 423, 424, 426, 433, 440, 441, 442, 443, 445, 446, 448, 455, 462, 463, 464, 465, 468, 471, 473, 481, 482, 483, 485, 487, 488, 489, 490, 493, 496, 498, 499, 502, 505, 506, 508, 509, 511, 512, 514, 521, 523, 524, 526, 527, 534, 535, 536, 538, 539, 541, 542, 544, 546, 547, 548, 549, 550, 552, 554, 555, 556, 557, 558, 560, 561, 563, 564, 566, 567, 569, 570, 571, 572, 574, 575, 577, 578, 579, 582, 583, 585, 586, 587, 588, 591, 594, 596, 598, 600], "summary": {"covered_lines": 295, "num_statements": 298, "percent_covered": 98.99328859060402, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 98.99328859060402, "percent_statements_covered_display": "99"}, "missing_lines": [375, 394, 580], "excluded_lines": [], "functions": {"TestStorageBackend.test_backend_values": {"executed_lines": [22, 23], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestStorageManagerInit.test_default_initialization": {"executed_lines": [31, 32, 33], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestStorageManagerInit.test_s3_backend_initialization": {"executed_lines": [37, 38, 39], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestStorageManagerInit.test_custom_base_path": {"executed_lines": [43, 44, 45], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestStorageManagerInit.test_custom_ttl": {"executed_lines": [49, 50], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestStorageManagerInit.test_direct_local_backend": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestStorageDirectories.test_directories_created": {"executed_lines": [63, 64, 65, 66, 67], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestStorageDirectories.test_directory_constants": {"executed_lines": [71, 72, 73], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestSaveFile.manager": {"executed_lines": [82, 83], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "TestSaveFile.test_save_file_original": {"executed_lines": [88, 89, 96, 97, 98], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestSaveFile.test_save_file_processing": {"executed_lines": [103, 104, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestSaveFile.test_save_file_result": {"executed_lines": [116, 117, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestSaveFile.test_save_file_custom_category": {"executed_lines": [129, 130, 137], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestSaveFile.test_save_file_updates_status": {"executed_lines": [142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestGetFile.manager": {"executed_lines": [163, 164], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestGetFile.test_get_file_exists": {"executed_lines": [169, 170, 177, 178], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestGetFile.test_get_file_not_found": {"executed_lines": [183, 184], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestGetFile.test_get_file_from_processing": {"executed_lines": [189, 190, 197, 198], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestGetFile.test_get_file_from_results": {"executed_lines": [203, 204, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestDeleteJobFiles.manager": {"executed_lines": [221, 222], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219}, "TestDeleteJobFiles.test_delete_job_files": {"executed_lines": [227, 234, 235], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "TestDeleteJobFiles.test_delete_nonexistent_job": {"executed_lines": [240, 241], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestDeleteJobFiles.test_delete_clears_status": {"executed_lines": [246, 253, 254, 255], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestCleanupOldFiles.manager": {"executed_lines": [264, 265], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262}, "TestCleanupOldFiles.test_cleanup_old_files": {"executed_lines": [270, 271], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "TestCleanupOldFiles.test_cleanup_uses_default_ttl": {"executed_lines": [276, 277, 278], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestStorageStats.manager": {"executed_lines": [287, 288], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestStorageStats.test_get_storage_stats_local": {"executed_lines": [293, 294, 295, 296, 297, 298, 299], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "TestStorageStats.test_storage_stats_after_save": {"executed_lines": [304, 311, 312], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "TestStorageStats.test_get_local_size": {"executed_lines": [316, 317], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "TestStorageStats.test_get_local_file_count": {"executed_lines": [321, 322], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestUploadStatus.manager": {"executed_lines": [331, 332], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestUploadStatus.test_get_upload_status_exists": {"executed_lines": [337, 344, 345, 346, 347, 348], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestUploadStatus.test_get_upload_status_not_exists": {"executed_lines": [353, 354], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestS3Fallback.test_s3_save_falls_back_to_local": {"executed_lines": [363, 364, 367, 368], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [375], "excluded_lines": [], "start_line": 361}, "TestS3Fallback.test_s3_get_falls_back_to_local": {"executed_lines": [380, 381, 384, 385], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [394], "excluded_lines": [], "start_line": 378}, "TestS3Fallback.test_s3_delete_falls_back": {"executed_lines": [399, 400, 404, 405, 410, 411], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397}, "TestLocalStoragePaths.manager": {"executed_lines": [420, 421], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418}, "TestLocalStoragePaths.test_user_isolation": {"executed_lines": [426, 433, 440, 441, 442, 443], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424}, "TestLocalStoragePaths.test_job_isolation": {"executed_lines": [448, 455, 462, 463, 464, 465], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 446}, "TestS3Config.test_s3_config_from_env": {"executed_lines": [473, 481, 482, 483], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471}, "TestS3Config.test_s3_config_defaults": {"executed_lines": [487, 488, 489, 490], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 485}, "TestStorageManagerInstance.test_storage_manager_exists": {"executed_lines": [498, 499], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 496}, "TestEdgeCases.manager": {"executed_lines": [508, 509], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 506}, "TestEdgeCases.test_save_empty_content": {"executed_lines": [514, 521], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 512}, "TestEdgeCases.test_save_large_content": {"executed_lines": [526, 527, 534, 535, 536], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "TestEdgeCases.test_get_upload_status_no_status": {"executed_lines": [541, 542], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 539}, "TestEdgeCases.test_get_local_size_nonexistent_dir": {"executed_lines": [546, 547, 548, 549, 550], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544}, "TestEdgeCases.test_get_local_file_count_nonexistent_dir": {"executed_lines": [554, 555, 556, 557, 558], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552}, "TestEdgeCases.test_cleanup_nonexistent_dir": {"executed_lines": [563, 564], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 561}, "TestEdgeCases.test_s3_cleanup_not_implemented": {"executed_lines": [569, 570, 571, 572], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 567}, "TestEdgeCases.test_s3_get_not_implemented": {"executed_lines": [577, 578, 579], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [580], "excluded_lines": [], "start_line": 575}, "TestEdgeCases.test_s3_delete_not_implemented": {"executed_lines": [585, 586, 587, 588], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 583}, "TestDefaultConstants.test_chunk_size_constant": {"executed_lines": [596], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594}, "TestDefaultConstants.test_ttl_days_constant": {"executed_lines": [600], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 598}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 20, 26, 29, 35, 41, 47, 52, 58, 61, 69, 76, 79, 80, 85, 86, 100, 101, 113, 114, 126, 127, 139, 140, 157, 160, 161, 166, 167, 180, 181, 186, 187, 200, 201, 215, 218, 219, 224, 225, 237, 238, 243, 244, 258, 261, 262, 267, 268, 273, 274, 281, 284, 285, 290, 291, 301, 302, 314, 319, 325, 328, 329, 334, 335, 350, 351, 357, 360, 361, 377, 378, 396, 397, 414, 417, 418, 423, 424, 445, 446, 468, 471, 485, 493, 496, 502, 505, 506, 511, 512, 523, 524, 538, 539, 544, 552, 560, 561, 566, 567, 574, 575, 582, 583, 591, 594, 598], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestStorageBackend": {"executed_lines": [22, 23], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestStorageManagerInit": {"executed_lines": [31, 32, 33, 37, 38, 39, 43, 44, 45, 49, 50, 54, 55], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestStorageDirectories": {"executed_lines": [63, 64, 65, 66, 67, 71, 72, 73], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestSaveFile": {"executed_lines": [82, 83, 88, 89, 96, 97, 98, 103, 104, 111, 116, 117, 124, 129, 130, 137, 142, 143, 150, 151, 152, 153, 154], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestGetFile": {"executed_lines": [163, 164, 169, 170, 177, 178, 183, 184, 189, 190, 197, 198, 203, 204, 211, 212], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestDeleteJobFiles": {"executed_lines": [221, 222, 227, 234, 235, 240, 241, 246, 253, 254, 255], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 215}, "TestCleanupOldFiles": {"executed_lines": [264, 265, 270, 271, 276, 277, 278], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 258}, "TestStorageStats": {"executed_lines": [287, 288, 293, 294, 295, 296, 297, 298, 299, 304, 311, 312, 316, 317, 321, 322], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281}, "TestUploadStatus": {"executed_lines": [331, 332, 337, 344, 345, 346, 347, 348, 353, 354], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325}, "TestS3Fallback": {"executed_lines": [363, 364, 367, 368, 380, 381, 384, 385, 399, 400, 404, 405, 410, 411], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [375, 394], "excluded_lines": [], "start_line": 357}, "TestLocalStoragePaths": {"executed_lines": [420, 421, 426, 433, 440, 441, 442, 443, 448, 455, 462, 463, 464, 465], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestS3Config": {"executed_lines": [473, 481, 482, 483, 487, 488, 489, 490], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468}, "TestStorageManagerInstance": {"executed_lines": [498, 499], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 493}, "TestEdgeCases": {"executed_lines": [508, 509, 514, 521, 526, 527, 534, 535, 536, 541, 542, 546, 547, 548, 549, 550, 554, 555, 556, 557, 558, 563, 564, 569, 570, 571, 572, 577, 578, 579, 585, 586, 587, 588], "summary": {"covered_lines": 34, "num_statements": 35, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.14285714285714, "percent_statements_covered_display": "97"}, "missing_lines": [580], "excluded_lines": [], "start_line": 502}, "TestDefaultConstants": {"executed_lines": [596, 600], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 17, 20, 26, 29, 35, 41, 47, 52, 58, 61, 69, 76, 79, 80, 85, 86, 100, 101, 113, 114, 126, 127, 139, 140, 157, 160, 161, 166, 167, 180, 181, 186, 187, 200, 201, 215, 218, 219, 224, 225, 237, 238, 243, 244, 258, 261, 262, 267, 268, 273, 274, 281, 284, 285, 290, 291, 301, 302, 314, 319, 325, 328, 329, 334, 335, 350, 351, 357, 360, 361, 377, 378, 396, 397, 414, 417, 418, 423, 424, 445, 446, 468, 471, 485, 493, 496, 502, 505, 506, 511, 512, 523, 524, 538, 539, 544, 552, 560, 561, 566, 567, 574, 575, 582, 583, 591, 594, 598], "summary": {"covered_lines": 115, "num_statements": 115, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_crud_comprehensive_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 12, 13, 27, 30, 31, 33, 34, 35, 36, 37, 39, 47, 48, 49, 50, 52, 53, 55, 56, 57, 59, 67, 68, 69, 70, 72, 73, 75, 76, 77, 78, 79, 81, 82, 84, 85, 87, 88, 90, 92, 94, 96, 97, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 112, 113, 115, 117, 121, 123, 124, 126, 127, 128, 129, 130, 131, 133, 134, 136, 138, 139, 141, 143, 144, 146, 147, 149, 150, 151, 152, 153, 155, 156, 158, 160, 161, 163, 164, 165, 166, 168, 170, 172, 173, 175, 176, 177, 178, 179, 180, 182, 184, 186, 187, 189, 190, 191, 192, 193, 194, 196, 197, 199, 202, 205, 206, 208, 209, 210, 211, 213, 214, 223, 224, 225, 227, 228, 230, 231, 232, 233, 235, 236, 237, 239, 241, 242, 248, 250, 251, 253, 254, 255, 256, 257, 259, 260, 262, 264, 265, 267, 268, 269, 270, 271, 272, 274, 275, 277, 279, 280, 282, 283, 284, 285, 287, 289, 292, 295, 296, 298, 299, 300, 301, 303, 304, 311, 312, 314, 315, 317, 318, 319, 320, 321, 323, 324, 328, 330, 331, 333, 334, 335, 336, 337, 339, 343, 345, 346, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 364, 366, 367, 369, 370, 371, 372, 374, 375, 381, 383, 384, 386, 387, 388, 389, 390, 391, 393, 394, 396, 398, 399, 401, 402, 403, 404, 406, 407, 409, 412, 415, 416, 418, 419, 420, 421, 422, 424, 429, 436, 437, 439, 440, 442, 443, 444, 445, 446, 447, 448, 450, 451, 455, 456, 458, 459, 461, 462, 463, 464, 465, 467, 468, 470, 472, 473, 475, 476, 477, 478, 479, 481, 482, 486, 488, 489, 491, 492, 493, 494, 495, 497, 498, 502, 505, 508, 509, 511, 512, 513, 514, 516, 523, 524, 526, 527, 529, 530, 531, 532, 533, 535, 536, 538, 540, 541, 543, 544, 545, 546, 548, 550, 552, 553, 555, 556, 557, 558, 559, 561, 563, 565, 566, 568, 569, 570, 571, 572, 573, 575, 576, 582, 584, 585, 587, 588, 589, 590, 592, 593, 599, 601, 602, 604, 605, 606, 607, 608, 609, 611, 612, 614, 616, 617, 619, 620, 621, 622, 624, 625, 627, 630, 633, 634, 636, 637, 638, 639, 641, 642, 649, 651, 652, 654, 655, 656, 657, 660, 661, 662, 664, 665, 672, 674, 675, 677, 678, 679, 680, 681, 683, 684, 686, 688, 689, 691, 692, 693, 694, 696, 697, 701, 703, 704, 706, 707, 708, 709, 710, 711, 712, 714, 715, 721, 723, 724, 726, 727, 728, 729, 730, 731, 733, 734, 736, 739, 742, 743, 745, 746, 747, 748, 750, 751, 752, 760, 762, 763, 765, 766, 767, 768, 769, 771, 772, 774, 776, 777, 779, 780, 781, 782, 784, 786, 789, 792, 793, 795, 796, 797, 798, 800, 801, 809, 811, 812, 814, 816, 817, 825, 826, 828, 829, 831, 832, 840, 841, 843, 844, 846, 847, 855, 856, 858, 859, 860, 861, 862, 864, 865, 867, 869, 870, 872, 874, 876, 878, 879, 881, 882, 883, 884, 886, 887, 891, 893, 894, 896, 898, 902, 904, 905, 907, 908, 909, 910, 911, 912, 914, 915, 921, 923, 924, 926, 928, 934, 936, 937, 939, 940, 941, 942, 943, 944, 945, 947, 948, 950, 952, 953, 955, 956, 957, 958, 959, 961, 962, 964, 966, 967, 969, 970, 971, 972, 974, 975, 981, 984, 987, 988, 990, 991, 992, 993, 994, 996, 997, 999, 1001, 1002, 1004, 1006, 1007, 1009, 1010, 1012, 1013, 1014, 1015, 1017, 1018, 1026, 1028, 1029, 1031, 1033, 1034, 1042, 1043, 1045, 1046, 1048, 1049, 1057, 1058, 1060, 1061, 1062, 1063, 1064, 1065, 1067, 1068, 1074, 1076, 1077, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1087, 1088, 1090, 1092, 1093, 1095, 1096, 1097, 1098, 1100, 1101, 1103, 1106, 1109, 1110, 1112, 1113, 1114, 1115, 1116, 1118, 1119, 1121, 1123, 1124, 1126, 1127, 1128, 1129, 1131, 1132, 1140, 1142, 1143, 1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1159, 1161, 1162, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1178, 1180, 1181, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1192, 1194, 1196, 1197, 1199, 1200, 1201, 1202, 1204, 1205, 1209, 1212, 1215, 1216, 1218, 1219, 1220, 1221, 1223, 1233, 1235, 1236, 1238, 1239, 1240, 1241, 1242, 1244, 1245, 1249, 1251, 1252, 1254, 1256, 1257, 1259, 1260, 1262, 1263, 1264, 1265, 1267, 1269, 1271, 1272, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1291, 1293, 1294, 1296, 1297, 1298, 1299, 1301, 1303, 1304, 1311, 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1323, 1324, 1330, 1332, 1333, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1351], "summary": {"covered_lines": 782, "num_statements": 782, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestJobCRUD.test_create_job_success": {"executed_lines": [33, 34, 35, 36, 37, 39, 47, 48, 49, 50], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestJobCRUD.test_create_job_no_commit": {"executed_lines": [55, 56, 57, 59, 67, 68, 69, 70], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestJobCRUD.test_get_job_success": {"executed_lines": [75, 76, 77, 78, 79, 81, 82, 84, 85], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestJobCRUD.test_get_job_invalid_uuid": {"executed_lines": [90, 92, 94], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestJobCRUD.test_update_job_status_success": {"executed_lines": [99, 100, 101, 102, 103, 104, 106, 107, 109, 110], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestJobCRUD.test_update_job_status_invalid_uuid": {"executed_lines": [115, 117, 121], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestJobCRUD.test_update_job_progress_success": {"executed_lines": [126, 127, 128, 129, 130, 131, 133, 134, 136], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestJobCRUD.test_update_job_progress_invalid_uuid": {"executed_lines": [141, 143, 144], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "TestJobCRUD.test_get_job_progress_success": {"executed_lines": [149, 150, 151, 152, 153, 155, 156, 158], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestJobCRUD.test_list_jobs_empty": {"executed_lines": [163, 164, 165, 166, 168, 170], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestJobCRUD.test_list_jobs_with_results": {"executed_lines": [175, 176, 177, 178, 179, 180, 182, 184], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestJobCRUD.test_upsert_progress_alias": {"executed_lines": [189, 190, 191, 192, 193, 194, 196, 197, 199], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestFeedbackCRUD.test_create_enhanced_feedback_success": {"executed_lines": [208, 209, 210, 211, 213, 214, 223, 224, 225], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "TestFeedbackCRUD.test_create_enhanced_feedback_minimal": {"executed_lines": [230, 231, 232, 233, 235, 239, 241, 242, 248], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "TestFeedbackCRUD.test_create_enhanced_feedback_minimal.mock_refresh": {"executed_lines": [236, 237], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235}, "TestFeedbackCRUD.test_get_feedback_success": {"executed_lines": [253, 254, 255, 256, 257, 259, 260, 262], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "TestFeedbackCRUD.test_get_feedback_by_job_id": {"executed_lines": [267, 268, 269, 270, 271, 272, 274, 275, 277], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestFeedbackCRUD.test_list_all_feedback": {"executed_lines": [282, 283, 284, 285, 287, 289], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestDocumentEmbeddingCRUD.test_create_document_embedding": {"executed_lines": [298, 299, 300, 301, 303, 304, 311, 312], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "TestDocumentEmbeddingCRUD.test_get_document_embedding_by_id": {"executed_lines": [317, 318, 319, 320, 321, 323, 324, 328], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "TestDocumentEmbeddingCRUD.test_get_document_embedding_by_hash": {"executed_lines": [333, 334, 335, 336, 337, 339, 343], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331}, "TestDocumentEmbeddingCRUD.test_update_document_embedding": {"executed_lines": [348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 364], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "TestDocumentEmbeddingCRUD.test_update_document_embedding_not_found": {"executed_lines": [369, 370, 371, 372, 374, 375, 381], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestDocumentEmbeddingCRUD.test_delete_document_embedding": {"executed_lines": [386, 387, 388, 389, 390, 391, 393, 394, 396], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 384}, "TestDocumentEmbeddingCRUD.test_delete_document_embedding_not_found": {"executed_lines": [401, 402, 403, 404, 406, 407, 409], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399}, "TestDocumentChunkCRUD.test_create_document_with_chunks": {"executed_lines": [418, 419, 420, 421, 422, 424, 429, 436, 437], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "TestDocumentChunkCRUD.test_get_document_with_chunks": {"executed_lines": [442, 443, 444, 445, 446, 447, 448, 450, 451, 455, 456], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 440}, "TestDocumentChunkCRUD.test_get_chunks_by_parent": {"executed_lines": [461, 462, 463, 464, 465, 467, 468, 470], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "TestDocumentChunkCRUD.test_search_similar_chunks": {"executed_lines": [475, 476, 477, 478, 479, 481, 482, 486], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "TestDocumentChunkCRUD.test_find_similar_embeddings": {"executed_lines": [491, 492, 493, 494, 495, 497, 498, 502], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 489}, "TestExperimentCRUD.test_create_experiment": {"executed_lines": [511, 512, 513, 514, 516, 523, 524], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 509}, "TestExperimentCRUD.test_get_experiment": {"executed_lines": [529, 530, 531, 532, 533, 535, 536, 538], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 527}, "TestExperimentCRUD.test_list_experiments": {"executed_lines": [543, 544, 545, 546, 548, 550], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541}, "TestExperimentCRUD.test_list_experiments_with_status": {"executed_lines": [555, 556, 557, 558, 559, 561, 563], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 553}, "TestExperimentCRUD.test_update_experiment": {"executed_lines": [568, 569, 570, 571, 572, 573, 575, 576, 582], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566}, "TestExperimentCRUD.test_update_experiment_not_found": {"executed_lines": [587, 588, 589, 590, 592, 593, 599], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 585}, "TestExperimentCRUD.test_delete_experiment": {"executed_lines": [604, 605, 606, 607, 608, 609, 611, 612, 614], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602}, "TestExperimentCRUD.test_delete_experiment_not_found": {"executed_lines": [619, 620, 621, 622, 624, 625, 627], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617}, "TestExperimentVariantCRUD.test_create_experiment_variant": {"executed_lines": [636, 637, 638, 639, 641, 642, 649], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 634}, "TestExperimentVariantCRUD.test_create_experiment_variant_as_control": {"executed_lines": [654, 655, 656, 657, 660, 661, 662, 664, 665, 672], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 652}, "TestExperimentVariantCRUD.test_get_experiment_variant": {"executed_lines": [677, 678, 679, 680, 681, 683, 684, 686], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 675}, "TestExperimentVariantCRUD.test_list_experiment_variants": {"executed_lines": [691, 692, 693, 694, 696, 697, 701], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 689}, "TestExperimentVariantCRUD.test_update_experiment_variant": {"executed_lines": [706, 707, 708, 709, 710, 711, 712, 714, 715, 721], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 704}, "TestExperimentVariantCRUD.test_delete_experiment_variant": {"executed_lines": [726, 727, 728, 729, 730, 731, 733, 734, 736], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 724}, "TestExperimentResultCRUD.test_create_experiment_result": {"executed_lines": [745, 746, 747, 748, 750, 751, 752, 760], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 743}, "TestExperimentResultCRUD.test_get_experiment_result": {"executed_lines": [765, 766, 767, 768, 769, 771, 772, 774], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 763}, "TestExperimentResultCRUD.test_list_experiment_results": {"executed_lines": [779, 780, 781, 782, 784, 786], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 777}, "TestBehaviorFileCRUD.test_create_behavior_file": {"executed_lines": [795, 796, 797, 798, 800, 801, 809], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 793}, "TestBehaviorFileCRUD.test_create_behavior_file_invalid_conversion_id": {"executed_lines": [814, 816, 817], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 812}, "TestBehaviorFileCRUD.test_create_behavior_file_path_traversal": {"executed_lines": [828, 829, 831, 832], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 826}, "TestBehaviorFileCRUD.test_create_behavior_file_absolute_path": {"executed_lines": [843, 844, 846, 847], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 841}, "TestBehaviorFileCRUD.test_get_behavior_file": {"executed_lines": [858, 859, 860, 861, 862, 864, 865, 867], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 856}, "TestBehaviorFileCRUD.test_get_behavior_file_invalid_id": {"executed_lines": [872, 874, 876], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 870}, "TestBehaviorFileCRUD.test_get_behavior_files_by_conversion": {"executed_lines": [881, 882, 883, 884, 886, 887, 891], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 879}, "TestBehaviorFileCRUD.test_get_behavior_files_by_conversion_invalid_id": {"executed_lines": [896, 898, 902], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 894}, "TestBehaviorFileCRUD.test_update_behavior_file_content": {"executed_lines": [907, 908, 909, 910, 911, 912, 914, 915, 921], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 905}, "TestBehaviorFileCRUD.test_update_behavior_file_content_invalid_id": {"executed_lines": [926, 928, 934], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 924}, "TestBehaviorFileCRUD.test_delete_behavior_file": {"executed_lines": [939, 940, 941, 942, 943, 944, 945, 947, 948, 950], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 937}, "TestBehaviorFileCRUD.test_delete_behavior_file_not_found": {"executed_lines": [955, 956, 957, 958, 959, 961, 962, 964], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 953}, "TestBehaviorFileCRUD.test_get_behavior_files_by_type": {"executed_lines": [969, 970, 971, 972, 974, 975, 981], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 967}, "TestAddonAssetCRUD.test_get_addon_asset": {"executed_lines": [990, 991, 992, 993, 994, 996, 997, 999], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 988}, "TestAddonAssetCRUD.test_get_addon_asset_invalid_id": {"executed_lines": [1004, 1006, 1007], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1002}, "TestAddonAssetCRUD.test_create_addon_asset": {"executed_lines": [1012, 1013, 1014, 1015, 1017, 1018, 1026], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1010}, "TestAddonAssetCRUD.test_create_addon_asset_invalid_addon_id": {"executed_lines": [1031, 1033, 1034], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1029}, "TestAddonAssetCRUD.test_create_addon_asset_path_traversal": {"executed_lines": [1045, 1046, 1048, 1049], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1043}, "TestAddonAssetCRUD.test_update_addon_asset": {"executed_lines": [1060, 1061, 1062, 1063, 1064, 1065, 1067, 1068, 1074], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1058}, "TestAddonAssetCRUD.test_delete_addon_asset": {"executed_lines": [1079, 1080, 1081, 1082, 1083, 1084, 1085, 1087, 1088, 1090], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1077}, "TestAddonAssetCRUD.test_list_addon_assets": {"executed_lines": [1095, 1096, 1097, 1098, 1100, 1101, 1103], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1093}, "TestAssetCRUD.test_get_asset": {"executed_lines": [1112, 1113, 1114, 1115, 1116, 1118, 1119, 1121], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1110}, "TestAssetCRUD.test_create_asset": {"executed_lines": [1126, 1127, 1128, 1129, 1131, 1132, 1140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1124}, "TestAssetCRUD.test_update_asset_status": {"executed_lines": [1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1159], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1143}, "TestAssetCRUD.test_update_asset_metadata": {"executed_lines": [1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1178], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1162}, "TestAssetCRUD.test_delete_asset": {"executed_lines": [1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1192, 1194], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1181}, "TestAssetCRUD.test_list_assets_for_conversion": {"executed_lines": [1199, 1200, 1201, 1202, 1204, 1205, 1209], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1197}, "TestPatternSubmissionCRUD.test_create_pattern_submission": {"executed_lines": [1218, 1219, 1220, 1221, 1223, 1233], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1216}, "TestPatternSubmissionCRUD.test_get_pattern_submission": {"executed_lines": [1238, 1239, 1240, 1241, 1242, 1244, 1245, 1249], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1236}, "TestPatternSubmissionCRUD.test_get_pattern_submission_invalid_id": {"executed_lines": [1254, 1256, 1257], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1252}, "TestPatternSubmissionCRUD.test_get_pending_submissions": {"executed_lines": [1262, 1263, 1264, 1265, 1267, 1269], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1260}, "TestPatternSubmissionCRUD.test_update_pattern_submission_status": {"executed_lines": [1274, 1275, 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1291], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1272}, "TestPatternSubmissionCRUD.test_update_pattern_submission_not_found": {"executed_lines": [1296, 1297, 1298, 1299, 1301, 1303, 1304], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1294}, "TestPatternSubmissionCRUD.test_vote_on_pattern_upvote": {"executed_lines": [1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1323, 1324, 1330], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1312}, "TestPatternSubmissionCRUD.test_vote_on_pattern_downvote": {"executed_lines": [1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1351], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1333}, "": {"executed_lines": [6, 7, 8, 9, 10, 12, 13, 27, 30, 31, 52, 53, 72, 73, 87, 88, 96, 97, 112, 113, 123, 124, 138, 139, 146, 147, 160, 161, 172, 173, 186, 187, 202, 205, 206, 227, 228, 250, 251, 264, 265, 279, 280, 292, 295, 296, 314, 315, 330, 331, 345, 346, 366, 367, 383, 384, 398, 399, 412, 415, 416, 439, 440, 458, 459, 472, 473, 488, 489, 505, 508, 509, 526, 527, 540, 541, 552, 553, 565, 566, 584, 585, 601, 602, 616, 617, 630, 633, 634, 651, 652, 674, 675, 688, 689, 703, 704, 723, 724, 739, 742, 743, 762, 763, 776, 777, 789, 792, 793, 811, 812, 825, 826, 840, 841, 855, 856, 869, 870, 878, 879, 893, 894, 904, 905, 923, 924, 936, 937, 952, 953, 966, 967, 984, 987, 988, 1001, 1002, 1009, 1010, 1028, 1029, 1042, 1043, 1057, 1058, 1076, 1077, 1092, 1093, 1106, 1109, 1110, 1123, 1124, 1142, 1143, 1161, 1162, 1180, 1181, 1196, 1197, 1212, 1215, 1216, 1235, 1236, 1251, 1252, 1259, 1260, 1271, 1272, 1293, 1294, 1311, 1312, 1332, 1333], "summary": {"covered_lines": 180, "num_statements": 180, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestJobCRUD": {"executed_lines": [33, 34, 35, 36, 37, 39, 47, 48, 49, 50, 55, 56, 57, 59, 67, 68, 69, 70, 75, 76, 77, 78, 79, 81, 82, 84, 85, 90, 92, 94, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 115, 117, 121, 126, 127, 128, 129, 130, 131, 133, 134, 136, 141, 143, 144, 149, 150, 151, 152, 153, 155, 156, 158, 163, 164, 165, 166, 168, 170, 175, 176, 177, 178, 179, 180, 182, 184, 189, 190, 191, 192, 193, 194, 196, 197, 199], "summary": {"covered_lines": 86, "num_statements": 86, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestFeedbackCRUD": {"executed_lines": [208, 209, 210, 211, 213, 214, 223, 224, 225, 230, 231, 232, 233, 235, 236, 237, 239, 241, 242, 248, 253, 254, 255, 256, 257, 259, 260, 262, 267, 268, 269, 270, 271, 272, 274, 275, 277, 282, 283, 284, 285, 287, 289], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 202}, "TestDocumentEmbeddingCRUD": {"executed_lines": [298, 299, 300, 301, 303, 304, 311, 312, 317, 318, 319, 320, 321, 323, 324, 328, 333, 334, 335, 336, 337, 339, 343, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 364, 369, 370, 371, 372, 374, 375, 381, 386, 387, 388, 389, 390, 391, 393, 394, 396, 401, 402, 403, 404, 406, 407, 409], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestDocumentChunkCRUD": {"executed_lines": [418, 419, 420, 421, 422, 424, 429, 436, 437, 442, 443, 444, 445, 446, 447, 448, 450, 451, 455, 456, 461, 462, 463, 464, 465, 467, 468, 470, 475, 476, 477, 478, 479, 481, 482, 486, 491, 492, 493, 494, 495, 497, 498, 502], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 412}, "TestExperimentCRUD": {"executed_lines": [511, 512, 513, 514, 516, 523, 524, 529, 530, 531, 532, 533, 535, 536, 538, 543, 544, 545, 546, 548, 550, 555, 556, 557, 558, 559, 561, 563, 568, 569, 570, 571, 572, 573, 575, 576, 582, 587, 588, 589, 590, 592, 593, 599, 604, 605, 606, 607, 608, 609, 611, 612, 614, 619, 620, 621, 622, 624, 625, 627], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 505}, "TestExperimentVariantCRUD": {"executed_lines": [636, 637, 638, 639, 641, 642, 649, 654, 655, 656, 657, 660, 661, 662, 664, 665, 672, 677, 678, 679, 680, 681, 683, 684, 686, 691, 692, 693, 694, 696, 697, 701, 706, 707, 708, 709, 710, 711, 712, 714, 715, 721, 726, 727, 728, 729, 730, 731, 733, 734, 736], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 630}, "TestExperimentResultCRUD": {"executed_lines": [745, 746, 747, 748, 750, 751, 752, 760, 765, 766, 767, 768, 769, 771, 772, 774, 779, 780, 781, 782, 784, 786], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 739}, "TestBehaviorFileCRUD": {"executed_lines": [795, 796, 797, 798, 800, 801, 809, 814, 816, 817, 828, 829, 831, 832, 843, 844, 846, 847, 858, 859, 860, 861, 862, 864, 865, 867, 872, 874, 876, 881, 882, 883, 884, 886, 887, 891, 896, 898, 902, 907, 908, 909, 910, 911, 912, 914, 915, 921, 926, 928, 934, 939, 940, 941, 942, 943, 944, 945, 947, 948, 950, 955, 956, 957, 958, 959, 961, 962, 964, 969, 970, 971, 972, 974, 975, 981], "summary": {"covered_lines": 76, "num_statements": 76, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 789}, "TestAddonAssetCRUD": {"executed_lines": [990, 991, 992, 993, 994, 996, 997, 999, 1004, 1006, 1007, 1012, 1013, 1014, 1015, 1017, 1018, 1026, 1031, 1033, 1034, 1045, 1046, 1048, 1049, 1060, 1061, 1062, 1063, 1064, 1065, 1067, 1068, 1074, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1087, 1088, 1090, 1095, 1096, 1097, 1098, 1100, 1101, 1103], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 984}, "TestAssetCRUD": {"executed_lines": [1112, 1113, 1114, 1115, 1116, 1118, 1119, 1121, 1126, 1127, 1128, 1129, 1131, 1132, 1140, 1145, 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1159, 1164, 1165, 1166, 1167, 1168, 1169, 1171, 1172, 1178, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1191, 1192, 1194, 1199, 1200, 1201, 1202, 1204, 1205, 1209], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1106}, "TestPatternSubmissionCRUD": {"executed_lines": [1218, 1219, 1220, 1221, 1223, 1233, 1238, 1239, 1240, 1241, 1242, 1244, 1245, 1249, 1254, 1256, 1257, 1262, 1263, 1264, 1265, 1267, 1269, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1291, 1296, 1297, 1298, 1299, 1301, 1303, 1304, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1323, 1324, 1330, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1351], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1212}, "": {"executed_lines": [6, 7, 8, 9, 10, 12, 13, 27, 30, 31, 52, 53, 72, 73, 87, 88, 96, 97, 112, 113, 123, 124, 138, 139, 146, 147, 160, 161, 172, 173, 186, 187, 202, 205, 206, 227, 228, 250, 251, 264, 265, 279, 280, 292, 295, 296, 314, 315, 330, 331, 345, 346, 366, 367, 383, 384, 398, 399, 412, 415, 416, 439, 440, 458, 459, 472, 473, 488, 489, 505, 508, 509, 526, 527, 540, 541, 552, 553, 565, 566, 584, 585, 601, 602, 616, 617, 630, 633, 634, 651, 652, 674, 675, 688, 689, 703, 704, 723, 724, 739, 742, 743, 762, 763, 776, 777, 789, 792, 793, 811, 812, 825, 826, 840, 841, 855, 856, 869, 870, 878, 879, 893, 894, 904, 905, 923, 924, 936, 937, 952, 953, 966, 967, 984, 987, 988, 1001, 1002, 1009, 1010, 1028, 1029, 1042, 1043, 1057, 1058, 1076, 1077, 1092, 1093, 1106, 1109, 1110, 1123, 1124, 1142, 1143, 1161, 1162, 1180, 1181, 1196, 1197, 1212, 1215, 1216, 1235, 1236, 1251, 1252, 1259, 1260, 1271, 1272, 1293, 1294, 1311, 1312, 1332, 1333], "summary": {"covered_lines": 180, "num_statements": 180, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_crud_embeddings.py": {"executed_lines": [1, 2, 3, 4, 10, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 59, 60, 80, 81, 88, 89, 127, 128, 137, 138, 155, 156, 175, 176, 183, 186, 187, 255, 256, 260, 268, 278, 279, 284, 285, 301, 302, 332, 333, 334, 381, 382, 383, 412, 413, 414, 428, 429, 430, 472, 473, 474, 506, 517], "summary": {"covered_lines": 61, "num_statements": 183, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [32, 38, 39, 40, 43, 44, 47, 50, 51, 52, 55, 56, 61, 68, 71, 72, 74, 77, 82, 85, 90, 97, 98, 100, 106, 107, 108, 109, 113, 116, 119, 120, 121, 129, 134, 139, 146, 149, 150, 151, 152, 157, 164, 167, 169, 172, 177, 180, 194, 200, 206, 213, 216, 217, 222, 227, 232, 235, 262, 270, 272, 274, 281, 294, 306, 309, 315, 321, 328, 329, 340, 341, 343, 346, 352, 358, 364, 367, 371, 374, 377, 389, 390, 392, 395, 396, 402, 405, 409, 418, 419, 421, 425, 434, 435, 438, 439, 440, 442, 448, 454, 460, 463, 467, 469, 480, 481, 483, 485, 491, 493, 497, 498, 499, 500, 501, 502, 508, 509, 512, 513, 514], "excluded_lines": [], "functions": {"test_create_document_embedding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32, 38, 39, 40, 43, 44, 47, 50, 51, 52, 55, 56], "excluded_lines": [], "start_line": 31}, "test_get_document_embedding_by_hash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61, 68, 71, 72, 74, 77], "excluded_lines": [], "start_line": 60}, "test_get_document_embedding_by_id_not_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 85], "excluded_lines": [], "start_line": 81}, "test_update_document_embedding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90, 97, 98, 100, 106, 107, 108, 109, 113, 116, 119, 120, 121], "excluded_lines": [], "start_line": 89}, "test_update_document_embedding_not_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [129, 134], "excluded_lines": [], "start_line": 128}, "test_update_document_embedding_no_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [139, 146, 149, 150, 151, 152], "excluded_lines": [], "start_line": 138}, "test_delete_document_embedding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [157, 164, 167, 169, 172], "excluded_lines": [], "start_line": 156}, "test_delete_document_embedding_not_found": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [177, 180], "excluded_lines": [], "start_line": 176}, "test_find_similar_embeddings_sqlite_placeholder": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [194, 200, 206, 213, 216, 217, 222, 227, 232, 235], "excluded_lines": [], "start_line": 187}, "pytest_configure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [262], "excluded_lines": [], "start_line": 260}, "is_pgvector_available": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [270, 272, 274], "excluded_lines": [], "start_line": 268}, "pgvector_extension_available": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [281], "excluded_lines": [], "start_line": 279}, "sample_similar_embeddings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [294], "excluded_lines": [], "start_line": 285}, "populated_embeddings_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [306, 309, 315, 321, 328, 329], "excluded_lines": [], "start_line": 302}, "test_find_similar_embeddings_basic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [340, 341, 343, 346, 352, 358, 364, 367, 371, 374, 377], "excluded_lines": [], "start_line": 334}, "test_find_similar_embeddings_limit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [389, 390, 392, 395, 396, 402, 405, 409], "excluded_lines": [], "start_line": 383}, "test_find_similar_embeddings_empty_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [418, 419, 421, 425], "excluded_lines": [], "start_line": 414}, "test_find_similar_embeddings_high_dimension": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [434, 435, 438, 439, 440, 442, 448, 454, 460, 463, 467, 469], "excluded_lines": [], "start_line": 430}, "test_find_similar_embeddings_returns_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [480, 481, 483, 485, 491, 493, 497, 498, 499, 500, 501, 502], "excluded_lines": [], "start_line": 474}, "pytest_collection_modifyitems": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [508, 509, 512, 513, 514], "excluded_lines": [], "start_line": 506}, "": {"executed_lines": [1, 2, 3, 4, 10, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 59, 60, 80, 81, 88, 89, 127, 128, 137, 138, 155, 156, 175, 176, 183, 186, 187, 255, 256, 260, 268, 278, 279, 284, 285, 301, 302, 332, 333, 334, 381, 382, 383, 412, 413, 414, 428, 429, 430, 472, 473, 474, 506, 517], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 10, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 59, 60, 80, 81, 88, 89, 127, 128, 137, 138, 155, 156, 175, 176, 183, 186, 187, 255, 256, 260, 268, 278, 279, 284, 285, 301, 302, 332, 333, 334, 381, 382, 383, 412, 413, 414, 428, 429, 430, 472, 473, 474, 506, 517], "summary": {"covered_lines": 61, "num_statements": 183, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [32, 38, 39, 40, 43, 44, 47, 50, 51, 52, 55, 56, 61, 68, 71, 72, 74, 77, 82, 85, 90, 97, 98, 100, 106, 107, 108, 109, 113, 116, 119, 120, 121, 129, 134, 139, 146, 149, 150, 151, 152, 157, 164, 167, 169, 172, 177, 180, 194, 200, 206, 213, 216, 217, 222, 227, 232, 235, 262, 270, 272, 274, 281, 294, 306, 309, 315, 321, 328, 329, 340, 341, 343, 346, 352, 358, 364, 367, 371, 374, 377, 389, 390, 392, 395, 396, 402, 405, 409, 418, 419, 421, 425, 434, 435, 438, 439, 440, 442, 448, 454, 460, 463, 467, 469, 480, 481, 483, 485, 491, 493, 497, 498, 499, 500, 501, 502, 508, 509, 512, 513, 514], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_crud_expanded.py": {"executed_lines": [8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 47, 50, 51, 53, 54, 55, 57, 64, 65, 66, 67, 68, 70, 71, 73, 74, 75, 77, 78, 86, 88, 89, 91, 92, 94, 102, 103, 106, 109, 110, 112, 113, 114, 115, 117, 118, 120, 121, 123, 124, 126, 128, 130, 132, 133, 135, 136, 137, 138, 140, 141, 143, 146, 149, 150, 152, 153, 154, 155, 156, 158, 159, 161, 162, 164, 165, 167, 169, 171, 174, 177, 178, 180, 181, 183, 184, 186, 188, 189, 191, 193, 194, 197, 200, 201, 203, 204, 205, 206, 208, 210, 213, 216, 217, 219, 220, 221, 222, 224, 226, 228, 229, 231, 232, 233, 234, 236, 238, 241, 244, 245, 247, 248, 249, 251, 257, 260, 263, 264, 266, 267, 268, 270, 277, 279, 280, 282, 283, 284, 285, 287, 292, 294, 295, 297, 298, 299, 300, 302, 307, 309, 310, 312, 313, 314, 315, 316, 318, 324, 327, 330, 331, 333, 334, 335, 337, 343, 345, 346, 348, 349, 350, 351, 353, 355, 357, 358, 360, 361, 362, 363, 365, 367, 369, 370, 372, 373, 375, 381, 384, 387, 388, 390, 391, 392, 394, 402, 404, 405, 407, 408, 409, 410, 412, 417, 419, 420, 422, 423, 424, 425, 427, 432, 435, 438, 439, 441, 442, 444, 450], "summary": {"covered_lines": 220, "num_statements": 220, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestCreateJob.test_create_job_basic": {"executed_lines": [53, 54, 55, 57, 64, 65, 66, 67, 68], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestCreateJob.test_create_job_with_options": {"executed_lines": [73, 74, 75, 77, 78, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestCreateJob.test_create_job_no_commit": {"executed_lines": [91, 92, 94, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestGetJob.test_get_job_valid_uuid": {"executed_lines": [112, 113, 114, 115, 117, 118, 120, 121], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestGetJob.test_get_job_invalid_uuid": {"executed_lines": [126, 128, 130], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestGetJob.test_get_job_not_found": {"executed_lines": [135, 136, 137, 138, 140, 141, 143], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestUpdateJobStatus.test_update_job_status_valid": {"executed_lines": [152, 153, 154, 155, 156, 158, 159, 161, 162], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestUpdateJobStatus.test_update_job_status_invalid_uuid": {"executed_lines": [167, 169, 171], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestUpdateJobProgress.test_update_job_progress_valid": {"executed_lines": [180, 181, 183, 184, 186], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestUpdateJobProgress.test_update_job_progress_invalid_uuid": {"executed_lines": [191, 193, 194], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestGetJobProgress.test_get_job_progress_exists": {"executed_lines": [203, 204, 205, 206, 208, 210], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestListJobs.test_list_jobs_basic": {"executed_lines": [219, 220, 221, 222, 224, 226], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestListJobs.test_list_jobs_with_pagination": {"executed_lines": [231, 232, 233, 234, 236, 238], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestCreateResult.test_create_result_basic": {"executed_lines": [247, 248, 249, 251, 257], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestDocumentEmbedding.test_create_document_embedding": {"executed_lines": [266, 267, 268, 270, 277], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestDocumentEmbedding.test_get_document_embedding_by_id": {"executed_lines": [282, 283, 284, 285, 287, 292], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestDocumentEmbedding.test_get_document_embedding_by_hash": {"executed_lines": [297, 298, 299, 300, 302, 307], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestDocumentEmbedding.test_update_document_embedding": {"executed_lines": [312, 313, 314, 315, 316, 318, 324], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestExperimentCRUD.test_create_experiment": {"executed_lines": [333, 334, 335, 337, 343], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 331}, "TestExperimentCRUD.test_get_experiment": {"executed_lines": [348, 349, 350, 351, 353, 355], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "TestExperimentCRUD.test_list_experiments": {"executed_lines": [360, 361, 362, 363, 365, 367], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358}, "TestExperimentCRUD.test_update_experiment": {"executed_lines": [372, 373, 375, 381], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "TestBehaviorFileCRUD.test_create_behavior_file": {"executed_lines": [390, 391, 392, 394, 402], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388}, "TestBehaviorFileCRUD.test_get_behavior_file": {"executed_lines": [407, 408, 409, 410, 412, 417], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "TestBehaviorFileCRUD.test_get_behavior_files_by_conversion": {"executed_lines": [422, 423, 424, 425, 427, 432], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "TestUpsertProgress.test_upsert_progress_create": {"executed_lines": [441, 442, 444, 450], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 439}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 47, 50, 51, 70, 71, 88, 89, 106, 109, 110, 123, 124, 132, 133, 146, 149, 150, 164, 165, 174, 177, 178, 188, 189, 197, 200, 201, 213, 216, 217, 228, 229, 241, 244, 245, 260, 263, 264, 279, 280, 294, 295, 309, 310, 327, 330, 331, 345, 346, 357, 358, 369, 370, 384, 387, 388, 404, 405, 419, 420, 435, 438, 439], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestCreateJob": {"executed_lines": [53, 54, 55, 57, 64, 65, 66, 67, 68, 73, 74, 75, 77, 78, 86, 91, 92, 94, 102, 103], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestGetJob": {"executed_lines": [112, 113, 114, 115, 117, 118, 120, 121, 126, 128, 130, 135, 136, 137, 138, 140, 141, 143], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestUpdateJobStatus": {"executed_lines": [152, 153, 154, 155, 156, 158, 159, 161, 162, 167, 169, 171], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 146}, "TestUpdateJobProgress": {"executed_lines": [180, 181, 183, 184, 186, 191, 193, 194], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestGetJobProgress": {"executed_lines": [203, 204, 205, 206, 208, 210], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "TestListJobs": {"executed_lines": [219, 220, 221, 222, 224, 226, 231, 232, 233, 234, 236, 238], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213}, "TestCreateResult": {"executed_lines": [247, 248, 249, 251, 257], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "TestDocumentEmbedding": {"executed_lines": [266, 267, 268, 270, 277, 282, 283, 284, 285, 287, 292, 297, 298, 299, 300, 302, 307, 312, 313, 314, 315, 316, 318, 324], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestExperimentCRUD": {"executed_lines": [333, 334, 335, 337, 343, 348, 349, 350, 351, 353, 355, 360, 361, 362, 363, 365, 367, 372, 373, 375, 381], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "TestBehaviorFileCRUD": {"executed_lines": [390, 391, 392, 394, 402, 407, 408, 409, 410, 412, 417, 422, 423, 424, 425, 427, 432], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 384}, "TestUpsertProgress": {"executed_lines": [441, 442, 444, 450], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 47, 50, 51, 70, 71, 88, 89, 106, 109, 110, 123, 124, 132, 133, 146, 149, 150, 164, 165, 174, 177, 178, 188, 189, 197, 200, 201, 213, 216, 217, 228, 229, 241, 244, 245, 260, 263, 264, 279, 280, 294, 295, 309, 310, 327, 330, 331, 345, 346, 357, 358, 369, 370, 384, 387, 388, 404, 405, 419, 420, 435, 438, 439], "summary": {"covered_lines": 73, "num_statements": 73, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_crud_feedback.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 11, 12, 15, 16, 17, 18, 21, 22, 23, 24, 27, 28, 30, 32, 33, 35, 37, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 59, 60, 63, 64, 65, 67, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 84, 86, 87, 89, 91, 92, 93, 94, 95, 98, 101, 102, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 134, 135, 138, 139, 140, 143, 146, 147, 148, 149, 152, 153, 156, 157, 158, 159, 162], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"test_create_feedback": {"executed_lines": [15, 16, 17, 18, 21, 22, 23, 24, 27, 35, 37, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "test_create_feedback.mock_refresh_side_effect": {"executed_lines": [28, 30, 32, 33], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "test_get_feedback_by_job_id": {"executed_lines": [63, 64, 65, 67, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 84, 86, 87, 89, 91, 92, 93, 94, 95, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "test_list_all_feedback": {"executed_lines": [105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 134, 135, 138, 139, 140, 143, 146, 147, 148, 149, 152, 153, 156, 157, 158, 159, 162], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 11, 12, 59, 60, 101, 102], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 11, 12, 15, 16, 17, 18, 21, 22, 23, 24, 27, 28, 30, 32, 33, 35, 37, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 59, 60, 63, 64, 65, 67, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 84, 86, 87, 89, 91, 92, 93, 94, 95, 98, 101, 102, 105, 106, 107, 110, 111, 112, 113, 115, 116, 117, 118, 120, 121, 122, 123, 125, 126, 127, 128, 131, 132, 134, 135, 138, 139, 140, 143, 146, 147, 148, 149, 152, 153, 156, 157, 158, 159, 162], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_curseforge_service.py": {"executed_lines": [9, 10, 11, 13, 20, 23, 25, 27, 28, 30, 32, 34, 35, 36, 38, 40, 42, 43, 45, 46, 48, 50, 66, 67, 68, 69, 72, 73, 74, 76, 78, 79, 81, 82, 84, 86, 91, 92, 93, 94, 97, 98, 99, 101, 110, 112, 113, 115, 117, 126, 127, 128, 129, 132, 133, 134, 136, 138, 139, 141, 142, 144, 146, 157, 158, 159, 160, 163, 164, 165, 167, 169, 170, 172, 173, 175, 177, 181, 182, 183, 184, 187, 188, 189, 191, 193, 194, 196, 197, 199, 201, 208, 209, 210, 211, 214, 215, 216, 218, 220, 221, 223, 224, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237, 240, 243, 245, 247, 251, 252, 253, 255, 257, 259, 263, 264, 266, 268, 270, 274, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293, 295, 297, 301, 302, 305, 308, 310, 311, 313, 315, 317, 320, 323, 324, 326, 328, 330, 331, 332, 333, 336, 337, 338, 340, 342, 344, 345, 347, 349, 350, 351, 352, 355, 356, 357, 359, 360, 362, 364, 366, 368, 370, 372, 374, 376, 379], "summary": {"covered_lines": 185, "num_statements": 186, "percent_covered": 99.46236559139786, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.46236559139786, "percent_statements_covered_display": "99"}, "missing_lines": [380], "excluded_lines": [], "functions": {"TestCurseForgeService.test_init_default": {"executed_lines": [25, 27, 28], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestCurseForgeService.test_init_with_api_key": {"executed_lines": [32, 34, 35, 36], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestCurseForgeService.test_headers_without_api_key": {"executed_lines": [40, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestCurseForgeService.test_search_mods_success": {"executed_lines": [48, 50, 66, 67, 68, 69, 72, 73, 74, 76, 78, 79], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestCurseForgeService.test_search_mods_with_filters": {"executed_lines": [84, 86, 91, 92, 93, 94, 97, 98, 99, 101, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestCurseForgeService.test_get_mod_info_success": {"executed_lines": [115, 117, 126, 127, 128, 129, 132, 133, 134, 136, 138, 139], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestCurseForgeService.test_get_mod_files_success": {"executed_lines": [144, 146, 157, 158, 159, 160, 163, 164, 165, 167, 169, 170], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestCurseForgeService.test_get_file_download_url_success": {"executed_lines": [175, 177, 181, 182, 183, 184, 187, 188, 189, 191, 193, 194], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestCurseForgeService.test_get_categories_success": {"executed_lines": [199, 201, 208, 209, 210, 211, 214, 215, 216, 218, 220, 221], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "TestCurseForgeService.test_api_error_handling": {"executed_lines": [226, 228, 229, 230, 231, 232, 233, 234, 236, 237], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestCurseForgeURLParsing.test_parse_standard_url": {"executed_lines": [245, 247, 251, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243}, "TestCurseForgeURLParsing.test_parse_url_without_www": {"executed_lines": [257, 259, 263, 264], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestCurseForgeURLParsing.test_parse_url_with_query_params": {"executed_lines": [268, 270, 274, 275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestCurseForgeURLParsing.test_parse_invalid_url": {"executed_lines": [279, 281, 283], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277}, "TestCurseForgeURLParsing.test_parse_non_curseforge_url": {"executed_lines": [287, 289, 291], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestCurseForgeURLParsing.test_parse_url_with_trailing_slash": {"executed_lines": [295, 297, 301, 302], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "TestCurseForgeServiceSingleton.test_singleton_exists": {"executed_lines": [310, 311], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 308}, "TestCurseForgeServiceSingleton.test_singleton_is_consistent": {"executed_lines": [315, 317], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 313}, "TestCurseForgeServiceEdgeCases.test_search_empty_query": {"executed_lines": [326, 328, 330, 331, 332, 333, 336, 337, 338, 340, 342], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "TestCurseForgeServiceEdgeCases.test_get_mod_info_nonexistent": {"executed_lines": [347, 349, 350, 351, 352, 355, 356, 357, 359, 360], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345}, "TestCurseForgeServiceEdgeCases.test_parse_url_empty_string": {"executed_lines": [364, 366, 368], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestCurseForgeServiceEdgeCases.test_parse_url_none": {"executed_lines": [372, 374, 376], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "": {"executed_lines": [9, 10, 11, 13, 20, 23, 30, 38, 45, 46, 81, 82, 112, 113, 141, 142, 172, 173, 196, 197, 223, 224, 240, 243, 255, 266, 277, 285, 293, 305, 308, 313, 320, 323, 324, 344, 345, 362, 370, 379], "summary": {"covered_lines": 40, "num_statements": 41, "percent_covered": 97.5609756097561, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.5609756097561, "percent_statements_covered_display": "98"}, "missing_lines": [380], "excluded_lines": [], "start_line": 1}}, "classes": {"TestCurseForgeService": {"executed_lines": [25, 27, 28, 32, 34, 35, 36, 40, 42, 43, 48, 50, 66, 67, 68, 69, 72, 73, 74, 76, 78, 79, 84, 86, 91, 92, 93, 94, 97, 98, 99, 101, 110, 115, 117, 126, 127, 128, 129, 132, 133, 134, 136, 138, 139, 144, 146, 157, 158, 159, 160, 163, 164, 165, 167, 169, 170, 175, 177, 181, 182, 183, 184, 187, 188, 189, 191, 193, 194, 199, 201, 208, 209, 210, 211, 214, 215, 216, 218, 220, 221, 226, 228, 229, 230, 231, 232, 233, 234, 236, 237], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestCurseForgeURLParsing": {"executed_lines": [245, 247, 251, 252, 253, 257, 259, 263, 264, 268, 270, 274, 275, 279, 281, 283, 287, 289, 291, 295, 297, 301, 302], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "TestCurseForgeServiceSingleton": {"executed_lines": [310, 311, 315, 317], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestCurseForgeServiceEdgeCases": {"executed_lines": [326, 328, 330, 331, 332, 333, 336, 337, 338, 340, 342, 347, 349, 350, 351, 352, 355, 356, 357, 359, 360, 364, 366, 368, 372, 374, 376], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320}, "": {"executed_lines": [9, 10, 11, 13, 20, 23, 30, 38, 45, 46, 81, 82, 112, 113, 141, 142, 172, 173, 196, 197, 223, 224, 240, 243, 255, 266, 277, 285, 293, 305, 308, 313, 320, 323, 324, 344, 345, 362, 370, 379], "summary": {"covered_lines": 40, "num_statements": 41, "percent_covered": 97.5609756097561, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.5609756097561, "percent_statements_covered_display": "98"}, "missing_lines": [380], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_db_models.py": {"executed_lines": [1, 4, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"test_model_tablenames": {"executed_lines": [5, 6, 7], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 4, 5, 6, 7], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_debt_tracker.py": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 24, 25, 30, 32, 33, 34, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 48, 51, 53, 54, 55, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 94, 95, 96, 98, 99, 100, 101, 103, 104, 106, 107, 115, 116, 118, 119, 120, 122, 123, 131, 132, 134, 135], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestDebtTracker.tracker": {"executed_lines": [14, 15, 17, 18, 24, 25, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestDebtTracker.test_scan_file": {"executed_lines": [33, 34, 36, 37, 38, 39, 40, 42, 43, 44], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestDebtTracker.test_scan_directory": {"executed_lines": [47, 48, 51], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestDebtTracker.test_get_summary": {"executed_lines": [54, 55, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestDebtTracker.test_get_critical_items": {"executed_lines": [64, 65, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestDebtTracker.test_filter_by_issue": {"executed_lines": [70, 71, 72, 73], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestDebtTracker.test_export_markdown": {"executed_lines": [76, 77, 78, 80, 81, 82], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestDebtTracker.test_scan_non_existent_file": {"executed_lines": [85, 86], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestDebtTracker.test_scan_directory_with_exclusions": {"executed_lines": [89, 90, 91, 92, 94, 95, 96], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestDebtTracker.test_get_summary_empty": {"executed_lines": [99, 100, 101], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestDebtTracker.test_parse_severity_default": {"executed_lines": [104], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestDebtTracker.test_to_dict_and_str": {"executed_lines": [107, 115, 116, 118, 119, 120], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestDebtTracker.test_github_issue_link": {"executed_lines": [123, 131, 132, 134, 135], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 32, 46, 53, 63, 69, 75, 84, 88, 98, 103, 106, 122], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestDebtTracker": {"executed_lines": [14, 15, 17, 18, 24, 25, 30, 33, 34, 36, 37, 38, 39, 40, 42, 43, 44, 47, 48, 51, 54, 55, 57, 58, 59, 60, 61, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 78, 80, 81, 82, 85, 86, 89, 90, 91, 92, 94, 95, 96, 99, 100, 101, 104, 107, 115, 116, 118, 119, 120, 123, 131, 132, 134, 135], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "": {"executed_lines": [5, 6, 7, 8, 10, 11, 12, 32, 46, 53, 63, 69, 75, 84, 88, 98, 103, 106, 122], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_dependency_detector.py": {"executed_lines": [3, 4, 5, 7, 9, 25, 28, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 46, 48, 49, 51, 52, 53, 55, 57, 59, 60, 63, 66, 68, 69, 78, 80, 81, 82, 83, 85, 88, 91, 93, 95, 96, 97, 100, 101, 102, 104, 105, 106, 107, 108, 110, 112, 114, 117, 118, 119, 121, 122, 125, 128, 130, 131, 138, 140, 141, 143, 145, 147, 149, 150, 156, 158, 159, 161, 162, 164, 167, 170, 172, 173, 174, 176, 177, 178, 179, 180, 183, 186, 188, 190, 191, 194, 195, 196, 198, 205, 206, 209, 212, 214, 216, 217, 220, 221, 222, 224, 230, 231, 234, 237, 239, 240, 241, 242, 244, 246, 252, 254, 261, 262, 263], "summary": {"covered_lines": 125, "num_statements": 125, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestParseRequirementsFile.test_parse_simple_requirements": {"executed_lines": [30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestParseRequirementsFile.test_parse_empty_requirements": {"executed_lines": [48, 49, 51, 52, 53, 55], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestParseRequirementsFile.test_parse_nonexistent_file": {"executed_lines": [59, 60], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestParsePyprojectDependencies.test_parse_simple_pyproject": {"executed_lines": [68, 69, 78, 80, 81, 82, 83, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "TestFindPythonFiles.test_find_python_files_basic": {"executed_lines": [93, 95, 96, 97, 100, 101, 102, 104, 105, 106, 107, 108], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestFindPythonFiles.test_exclude_dirs": {"executed_lines": [112, 114, 117, 118, 119, 121, 122], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestScanPythonFile.test_scan_file_with_unused_import": {"executed_lines": [130, 131, 138, 140, 141, 143, 145], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestScanPythonFile.test_scan_file_with_used_import": {"executed_lines": [149, 150, 156, 158, 159, 161, 162, 164], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestGetAllImportedModules.test_get_imported_modules": {"executed_lines": [172, 173, 174, 176, 177, 178, 179, 180], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TestFindUnusedPackages.test_find_truly_unused_packages": {"executed_lines": [188, 190, 191, 194, 195, 196, 198, 205, 206], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestAnalyzeDependencies.test_analyze_dependencies_basic": {"executed_lines": [214, 216, 217, 220, 221, 222, 224, 230, 231], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestDependencyReport.test_empty_report": {"executed_lines": [239, 240, 241, 242], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "TestDependencyReport.test_report_with_data": {"executed_lines": [246, 252, 254, 261, 262, 263], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "": {"executed_lines": [3, 4, 5, 7, 9, 25, 28, 46, 57, 63, 66, 88, 91, 110, 125, 128, 147, 167, 170, 183, 186, 209, 212, 234, 237, 244], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestParseRequirementsFile": {"executed_lines": [30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 48, 49, 51, 52, 53, 55, 59, 60], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestParsePyprojectDependencies": {"executed_lines": [68, 69, 78, 80, 81, 82, 83, 85], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestFindPythonFiles": {"executed_lines": [93, 95, 96, 97, 100, 101, 102, 104, 105, 106, 107, 108, 112, 114, 117, 118, 119, 121, 122], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestScanPythonFile": {"executed_lines": [130, 131, 138, 140, 141, 143, 145, 149, 150, 156, 158, 159, 161, 162, 164], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestGetAllImportedModules": {"executed_lines": [172, 173, 174, 176, 177, 178, 179, 180], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestFindUnusedPackages": {"executed_lines": [188, 190, 191, 194, 195, 196, 198, 205, 206], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "TestAnalyzeDependencies": {"executed_lines": [214, 216, 217, 220, 221, 222, 224, 230, 231], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestDependencyReport": {"executed_lines": [239, 240, 241, 242, 246, 252, 254, 261, 262, 263], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "": {"executed_lines": [3, 4, 5, 7, 9, 25, 28, 46, 57, 63, 66, 88, 91, 110, 125, 128, 147, 167, 170, 183, 186, 209, 212, 234, 237, 244], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_dependency_detector_comprehensive_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 30, 33, 35, 40, 41, 42, 44, 45, 46, 48, 50, 55, 56, 57, 59, 60, 61, 63, 65, 68, 69, 70, 73, 75, 77, 84, 85, 86, 88, 89, 91, 93, 97, 98, 99, 101, 103, 105, 112, 113, 114, 116, 117, 119, 121, 126, 127, 128, 130, 131, 133, 135, 140, 141, 142, 144, 145, 146, 148, 150, 155, 156, 157, 159, 160, 162, 164, 168, 169, 170, 172, 174, 177, 180, 182, 183, 185, 187, 188, 189, 190, 192, 194, 195, 199, 201, 202, 204, 206, 207, 211, 213, 214, 215, 217, 219, 220, 222, 224, 225, 227, 229, 232, 235, 237, 238, 246, 248, 249, 251, 253, 254, 261, 263, 264, 266, 268, 269, 272, 275, 277, 278, 286, 287, 289, 291, 292, 297, 298, 300, 302, 303, 305, 307, 308, 310, 311, 314, 317, 320, 321, 322, 323, 325, 327, 329, 331, 332, 333, 335, 337, 339, 341, 342, 343, 345, 347, 349, 351, 352, 353, 355, 357, 360, 363, 365, 373, 374, 376, 378, 379, 380, 382, 383, 386, 389, 391, 398, 400, 401, 402, 403, 405, 407, 408, 411, 414, 416, 417, 419, 425, 426, 428, 430, 431, 433, 435, 442, 444, 446, 447, 449, 456, 459, 462, 465, 473, 474, 476, 481, 482, 484, 486, 490, 491, 494, 497, 499, 501, 503, 505, 522, 525, 528, 530, 531, 533, 534, 536, 538, 539, 547, 549, 551, 553, 554, 556, 557, 559, 561, 563, 565], "summary": {"covered_lines": 249, "num_statements": 249, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestImportVisitor.test_visit_import": {"executed_lines": [35, 40, 41, 42, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestImportVisitor.test_visit_import_from": {"executed_lines": [50, 55, 56, 57, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestImportVisitor.test_visit_wildcard_import_skipped": {"executed_lines": [65, 68, 69, 70, 73], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestImportVisitor.test_track_function_definitions": {"executed_lines": [77, 84, 85, 86, 88, 89], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestImportVisitor.test_track_async_function_definitions": {"executed_lines": [93, 97, 98, 99, 101], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestImportVisitor.test_track_class_definitions": {"executed_lines": [105, 112, 113, 114, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestImportVisitor.test_track_name_usage": {"executed_lines": [121, 126, 127, 128, 130, 131], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestImportVisitor.test_track_attribute_access": {"executed_lines": [135, 140, 141, 142, 144, 145, 146], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestImportVisitor.test_get_unused_imports": {"executed_lines": [150, 155, 156, 157, 159, 160], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestImportVisitor.test_get_unused_imports_all_used": {"executed_lines": [164, 168, 169, 170, 172, 174], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "TestParseRequirementsFile.test_parse_simple_requirements": {"executed_lines": [182, 183, 185, 187, 188, 189, 190], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestParseRequirementsFile.test_parse_requirements_with_comments": {"executed_lines": [194, 195, 199, 201, 202], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 192}, "TestParseRequirementsFile.test_parse_requirements_with_flags": {"executed_lines": [206, 207, 211, 213, 214, 215], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestParseRequirementsFile.test_parse_non_existent_file": {"executed_lines": [219, 220], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestParseRequirementsFile.test_parse_requirements_hyphen_underscore": {"executed_lines": [224, 225, 227, 229], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "TestParsePyprojectDependencies.test_parse_simple_dependencies": {"executed_lines": [237, 238, 246, 248, 249], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235}, "TestParsePyprojectDependencies.test_parse_dependencies_with_quotes": {"executed_lines": [253, 254, 261, 263, 264], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "TestParsePyprojectDependencies.test_parse_non_existent_file": {"executed_lines": [268, 269], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestScanPythonFile.test_scan_valid_file": {"executed_lines": [277, 278, 286, 287], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 275}, "TestScanPythonFile.test_scan_file_with_syntax_error": {"executed_lines": [291, 292, 297, 298], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289}, "TestScanPythonFile.test_scan_nonexistent_file": {"executed_lines": [302, 303], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestScanPythonFile.test_scan_binary_file": {"executed_lines": [307, 308, 310, 311], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestFindPythonFiles.test_find_python_files": {"executed_lines": [320, 321, 322, 323, 325, 327], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestFindPythonFiles.test_exclude_pycache": {"executed_lines": [331, 332, 333, 335, 337], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestFindPythonFiles.test_exclude_git": {"executed_lines": [341, 342, 343, 345, 347], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339}, "TestFindPythonFiles.test_custom_exclude_dirs": {"executed_lines": [351, 352, 353, 355, 357], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "TestScanDirectoryForUnusedImports.test_scan_directory": {"executed_lines": [365, 373, 374], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "TestScanDirectoryForUnusedImports.test_scan_directory_with_subdirs": {"executed_lines": [378, 379, 380, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376}, "TestGetAllImportedModules.test_get_imported_modules": {"executed_lines": [391, 398, 400, 401, 402, 403], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestGetAllImportedModules.test_get_imported_modules_empty_dir": {"executed_lines": [407, 408], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 405}, "TestFindUnusedPackages.test_find_unused_packages": {"executed_lines": [416, 417, 419, 425, 426], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestFindUnusedPackages.test_find_used_packages": {"executed_lines": [430, 431, 433, 435, 442], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "TestFindUnusedPackages.test_exclude_packages": {"executed_lines": [446, 447, 449, 456], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 444}, "TestAnalyzeDependencies.test_analyze_dependencies": {"executed_lines": [465, 473, 474, 476, 481, 482], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 462}, "TestAnalyzeDependencies.test_analyze_dependencies_empty_dirs": {"executed_lines": [486, 490, 491], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "TestPrintReport.test_print_report_empty": {"executed_lines": [499, 501], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 497}, "TestPrintReport.test_print_report_with_findings": {"executed_lines": [505, 522], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503}, "TestEdgeCases.test_parse_requirements_special_chars": {"executed_lines": [530, 531, 533, 534], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528}, "TestEdgeCases.test_parse_pyproject_complex_deps": {"executed_lines": [538, 539, 547, 549], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536}, "TestEdgeCases.test_scan_file_with_encoding": {"executed_lines": [553, 554, 556, 557], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 551}, "TestEdgeCases.test_get_imports_with_relative_imports": {"executed_lines": [561, 563, 565], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 559}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 30, 33, 48, 63, 75, 91, 103, 119, 133, 148, 162, 177, 180, 192, 204, 217, 222, 232, 235, 251, 266, 272, 275, 289, 300, 305, 314, 317, 329, 339, 349, 360, 363, 376, 386, 389, 405, 411, 414, 428, 444, 459, 462, 484, 494, 497, 503, 525, 528, 536, 551, 559], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestImportVisitor": {"executed_lines": [35, 40, 41, 42, 44, 45, 46, 50, 55, 56, 57, 59, 60, 61, 65, 68, 69, 70, 73, 77, 84, 85, 86, 88, 89, 93, 97, 98, 99, 101, 105, 112, 113, 114, 116, 117, 121, 126, 127, 128, 130, 131, 135, 140, 141, 142, 144, 145, 146, 150, 155, 156, 157, 159, 160, 164, 168, 169, 170, 172, 174], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestParseRequirementsFile": {"executed_lines": [182, 183, 185, 187, 188, 189, 190, 194, 195, 199, 201, 202, 206, 207, 211, 213, 214, 215, 219, 220, 224, 225, 227, 229], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestParsePyprojectDependencies": {"executed_lines": [237, 238, 246, 248, 249, 253, 254, 261, 263, 264, 268, 269], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "TestScanPythonFile": {"executed_lines": [277, 278, 286, 287, 291, 292, 297, 298, 302, 303, 307, 308, 310, 311], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestFindPythonFiles": {"executed_lines": [320, 321, 322, 323, 325, 327, 331, 332, 333, 335, 337, 341, 342, 343, 345, 347, 351, 352, 353, 355, 357], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "TestScanDirectoryForUnusedImports": {"executed_lines": [365, 373, 374, 378, 379, 380, 382, 383], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "TestGetAllImportedModules": {"executed_lines": [391, 398, 400, 401, 402, 403, 407, 408], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386}, "TestFindUnusedPackages": {"executed_lines": [416, 417, 419, 425, 426, 430, 431, 433, 435, 442, 446, 447, 449, 456], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "TestAnalyzeDependencies": {"executed_lines": [465, 473, 474, 476, 481, 482, 486, 490, 491], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "TestPrintReport": {"executed_lines": [499, 501, 505, 522], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 494}, "TestEdgeCases": {"executed_lines": [530, 531, 533, 534, 538, 539, 547, 549, 553, 554, 556, 557, 561, 563, 565], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 525}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 13, 30, 33, 48, 63, 75, 91, 103, 119, 133, 148, 162, 177, 180, 192, 204, 217, 222, 232, 235, 251, 266, 272, 275, 289, 300, 305, 314, 317, 329, 339, 349, 360, 363, 376, 386, 389, 405, 411, 414, 428, 444, 459, 462, 484, 494, 497, 503, 525, 528, 536, 551, 559], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_email_service.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 19, 20, 22, 23, 24, 25, 26, 27, 30, 31, 33, 38, 39, 45, 46, 47, 49, 50, 51, 53, 54, 58, 59, 61, 62, 63, 65, 66, 67, 68], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"email_service": {"executed_lines": [7], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "test_send_email_no_client": {"executed_lines": [12, 13, 19, 20], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "test_send_email_success": {"executed_lines": [24, 25, 26, 27, 30, 31, 33, 38, 39, 45, 46, 47], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "test_render_template_welcome": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "test_render_template_verification": {"executed_lines": [54, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "test_render_template_unknown": {"executed_lines": [62, 63], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "test_get_email_service": {"executed_lines": [66, 67, 68], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "": {"executed_lines": [1, 2, 3, 5, 6, 9, 10, 22, 23, 49, 53, 61, 65], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 19, 20, 22, 23, 24, 25, 26, 27, 30, 31, 33, 38, 39, 45, 46, 47, 49, 50, 51, 53, 54, 58, 59, 61, 62, 63, 65, 66, 67, 68], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_email_verification_coverage.py": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 17, 19, 24, 25, 27, 29, 31, 32, 37, 39, 41, 43, 46, 49, 51, 53, 58, 59, 61, 63, 65, 67], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestEmailVerificationModels.test_register_with_verification_request_valid": {"executed_lines": [17, 19, 24, 25], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestEmailVerificationModels.test_register_with_verification_request_invalid_email": {"executed_lines": [29, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestEmailVerificationModels.test_resend_verification_request_valid": {"executed_lines": [39, 41, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "TestEmailVerificationResponseModels.test_register_response": {"executed_lines": [51, 53, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestEmailVerificationResponseModels.test_resend_response": {"executed_lines": [63, 65, 67], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 27, 37, 46, 49, 61], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestEmailVerificationModels": {"executed_lines": [17, 19, 24, 25, 29, 31, 32, 39, 41, 43], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestEmailVerificationResponseModels": {"executed_lines": [51, 53, 58, 59, 63, 65, 67], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "": {"executed_lines": [5, 6, 7, 8, 9, 12, 15, 27, 37, 46, 49, 61], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_error_classifier.py": {"executed_lines": [3, 4, 6, 18, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 41, 44, 46, 47, 48, 51, 54, 56, 63, 64, 65, 66, 67, 69, 71, 79, 81, 82, 83, 84, 85, 87, 89, 95, 97, 98, 99, 102, 105, 107, 109, 110, 112, 114, 115, 117, 118, 119, 121, 122, 123, 127, 129, 130, 132, 133, 134, 136, 137, 141, 143, 144, 146, 147, 148, 150, 151, 155, 157, 158, 159, 161, 162, 164, 166, 167, 168, 170, 171, 173, 175, 176, 177, 179, 180, 182, 184, 185, 186, 188, 189, 191, 193, 194, 195, 197, 198, 200, 202, 203, 204, 206, 207, 209, 211, 212, 213, 215, 216, 218, 220, 221, 222, 223, 225, 226, 228, 230, 231, 237, 239, 241, 243, 244, 250, 252, 255, 258, 260, 261, 263, 265, 267, 268, 269, 271, 274, 277, 279, 280, 282, 285, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 309, 312, 314, 315, 317, 319, 320, 322, 324, 325, 326, 329, 332, 334, 335, 337, 338, 340, 342, 343, 345, 346, 348, 350, 351, 353, 354, 356, 358, 359, 361, 362], "summary": {"covered_lines": 195, "num_statements": 201, "percent_covered": 97.01492537313433, "percent_covered_display": "97", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 97.01492537313433, "percent_statements_covered_display": "97"}, "missing_lines": [124, 125, 138, 139, 152, 153], "excluded_lines": [], "functions": {"TestErrorType.test_error_type_values": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestErrorSeverity.test_severity_values": {"executed_lines": [46, 47, 48], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestErrorClassification.test_error_classification_creation": {"executed_lines": [56, 63, 64, 65, 66, 67], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestErrorClassification.test_error_classification_to_dict": {"executed_lines": [71, 79, 81, 82, 83, 84, 85], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestErrorClassification.test_error_classification_repr": {"executed_lines": [89, 95, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestErrorClassifier.test_classifier_initialization": {"executed_lines": [107, 109, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestErrorClassifier.test_classify_network_error_direct_type": {"executed_lines": [114, 115, 117, 118, 119, 121, 122, 123], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [124, 125], "excluded_lines": [], "start_line": 112}, "TestErrorClassifier.test_classify_timeout_error_direct_type": {"executed_lines": [129, 130, 132, 133, 134, 136, 137], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [138, 139], "excluded_lines": [], "start_line": 127}, "TestErrorClassifier.test_classify_validation_error_direct_type": {"executed_lines": [143, 144, 146, 147, 148, 150, 151], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [152, 153], "excluded_lines": [], "start_line": 141}, "TestErrorClassifier.test_classify_parse_error_by_pattern": {"executed_lines": [157, 158, 159, 161, 162], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestErrorClassifier.test_classify_network_error_by_pattern": {"executed_lines": [166, 167, 168, 170, 171], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestErrorClassifier.test_classify_rate_limit_by_pattern": {"executed_lines": [175, 176, 177, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestErrorClassifier.test_classify_timeout_by_pattern": {"executed_lines": [184, 185, 186, 188, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "TestErrorClassifier.test_classify_asset_error_by_pattern": {"executed_lines": [193, 194, 195, 197, 198], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestErrorClassifier.test_classify_package_error_by_pattern": {"executed_lines": [202, 203, 204, 206, 207], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestErrorClassifier.test_classify_unknown_error": {"executed_lines": [211, 212, 213, 215, 216], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestErrorClassifier.test_classify_with_context": {"executed_lines": [220, 221, 222, 223, 225, 226], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 218}, "TestErrorClassifier.test_get_recovery_priority_network": {"executed_lines": [230, 231, 237, 239], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "TestErrorClassifier.test_get_recovery_priority_logic": {"executed_lines": [243, 244, 250, 252], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "TestClassifyErrorFunction.test_classify_error_uses_global_classifier": {"executed_lines": [260, 261, 263], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 258}, "TestClassifyErrorFunction.test_classify_error_with_context": {"executed_lines": [267, 268, 269, 271], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestGetClassifier.test_get_classifier_returns_same_instance": {"executed_lines": [279, 280, 282], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277}, "TestErrorSeverityMapping.test_network_is_warning": {"executed_lines": [290], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288}, "TestErrorSeverityMapping.test_validation_is_warning": {"executed_lines": [294], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestErrorSeverityMapping.test_logic_is_blocking": {"executed_lines": [298], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "TestErrorSeverityMapping.test_authentication_is_blocking": {"executed_lines": [302], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestErrorSeverityMapping.test_not_found_is_info": {"executed_lines": [306], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "TestErrorPatterns.test_network_patterns_exist": {"executed_lines": [314, 315], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "TestErrorPatterns.test_validation_patterns_exist": {"executed_lines": [319, 320], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestErrorPatterns.test_all_error_types_have_patterns": {"executed_lines": [324, 325, 326], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322}, "TestPatternMatching.test_match_patterns_connection_refused": {"executed_lines": [334, 335, 337, 338], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "TestPatternMatching.test_match_patterns_timeout": {"executed_lines": [342, 343, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestPatternMatching.test_match_patterns_rate_limit": {"executed_lines": [350, 351, 353, 354], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348}, "TestPatternMatching.test_match_patterns_validation": {"executed_lines": [358, 359, 361, 362], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "": {"executed_lines": [3, 4, 6, 18, 21, 41, 44, 51, 54, 69, 87, 102, 105, 112, 127, 141, 155, 164, 173, 182, 191, 200, 209, 218, 228, 241, 255, 258, 265, 274, 277, 285, 288, 292, 296, 300, 304, 309, 312, 317, 322, 329, 332, 340, 348, 356], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestErrorType": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestErrorSeverity": {"executed_lines": [46, 47, 48], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestErrorClassification": {"executed_lines": [56, 63, 64, 65, 66, 67, 71, 79, 81, 82, 83, 84, 85, 89, 95, 97, 98, 99], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestErrorClassifier": {"executed_lines": [107, 109, 110, 114, 115, 117, 118, 119, 121, 122, 123, 129, 130, 132, 133, 134, 136, 137, 143, 144, 146, 147, 148, 150, 151, 157, 158, 159, 161, 162, 166, 167, 168, 170, 171, 175, 176, 177, 179, 180, 184, 185, 186, 188, 189, 193, 194, 195, 197, 198, 202, 203, 204, 206, 207, 211, 212, 213, 215, 216, 220, 221, 222, 223, 225, 226, 230, 231, 237, 239, 243, 244, 250, 252], "summary": {"covered_lines": 74, "num_statements": 80, "percent_covered": 92.5, "percent_covered_display": "92", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 92.5, "percent_statements_covered_display": "92"}, "missing_lines": [124, 125, 138, 139, 152, 153], "excluded_lines": [], "start_line": 102}, "TestClassifyErrorFunction": {"executed_lines": [260, 261, 263, 267, 268, 269, 271], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestGetClassifier": {"executed_lines": [279, 280, 282], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestErrorSeverityMapping": {"executed_lines": [290, 294, 298, 302, 306], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestErrorPatterns": {"executed_lines": [314, 315, 319, 320, 324, 325, 326], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309}, "TestPatternMatching": {"executed_lines": [334, 335, 337, 338, 342, 343, 345, 346, 350, 351, 353, 354, 358, 359, 361, 362], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "": {"executed_lines": [3, 4, 6, 18, 21, 41, 44, 51, 54, 69, 87, 102, 105, 112, 127, 141, 155, 164, 173, 182, 191, 200, 209, 218, 228, 241, 255, 258, 265, 274, 277, 285, 288, 292, 296, 300, 304, 309, 312, 317, 322, 329, 332, 340, 348, 356], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_error_handler_coverage.py": {"executed_lines": [5, 6, 7, 8, 10, 24, 27, 29, 30, 31, 32, 34, 36, 37, 39, 41, 42, 43, 45, 47, 48, 50, 52, 53, 54, 56, 58, 59, 61, 63, 64, 65, 67, 69, 70, 71, 73, 75, 76, 77, 80, 83, 84, 86, 88, 89, 91, 92, 94, 95, 96, 98, 99, 101, 103, 104, 106, 107, 108, 109, 111, 112, 113, 115, 116, 119, 120, 121, 123, 124, 126, 127, 129, 131, 132, 134, 135, 137, 138, 140, 142, 143, 145, 147, 148, 150, 151, 153, 154, 156, 157, 159, 160, 162, 164, 165, 167, 168, 169, 170, 172, 173, 175, 176, 178, 180, 181, 183, 184, 185, 186, 188, 189, 192, 195, 197, 198, 200, 201, 202, 204, 206, 207, 209, 210, 211, 213, 215, 216, 218, 219, 221, 223, 224, 226, 227, 229, 231, 232, 234, 235, 237, 239, 240, 242, 243, 245, 247, 248, 250, 251, 252, 255, 258, 260, 261, 263, 265, 267, 268, 270, 272, 274, 275, 277, 279, 281, 282, 284, 287, 290, 291, 293, 295, 297, 298, 300, 302, 303, 305, 306, 308, 310, 311, 313, 315, 317, 318, 319, 321, 323, 325, 326, 329, 331, 332, 333, 335, 337, 338, 339, 340, 342, 344, 345, 347, 348, 350, 352, 353, 355, 356, 358, 360, 361, 363, 364, 366, 368, 369, 372, 375, 377, 378, 379, 380, 382, 384, 385, 386, 387, 390, 393, 394, 396, 398, 399, 401, 402, 404, 405, 407, 409, 410, 412, 414, 416, 417, 418, 419, 420, 421, 423, 424, 427, 428, 429, 431, 433, 435, 436, 438, 439, 441, 443, 444, 446, 448, 449, 451, 453, 454, 456, 459, 461, 462, 463, 464, 466, 467, 469, 471, 472, 474, 476, 477], "summary": {"covered_lines": 286, "num_statements": 286, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestConversionErrors.test_conversion_error_default": {"executed_lines": [29, 30, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestConversionErrors.test_conversion_error_retryable": {"executed_lines": [36, 37], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestConversionErrors.test_ai_engine_unavailable_error": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestConversionErrors.test_ai_engine_unavailable_error_custom_message": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestConversionErrors.test_conversion_timeout_error": {"executed_lines": [52, 53, 54], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestConversionErrors.test_conversion_timeout_error_custom_message": {"executed_lines": [58, 59], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestConversionErrors.test_invalid_input_error": {"executed_lines": [63, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestConversionErrors.test_model_unavailable_error": {"executed_lines": [69, 70, 71], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestConversionErrors.test_error_inheritance": {"executed_lines": [75, 76, 77], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestRetryWithBackoff.test_successful_first_try": {"executed_lines": [86, 88, 89, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestRetryWithBackoff.test_successful_first_try.successful_func": {"executed_lines": [91, 92], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestRetryWithBackoff.test_retry_on_retryable_error": {"executed_lines": [101, 103, 104, 111, 112, 113], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestRetryWithBackoff.test_retry_on_retryable_error.retryable_func": {"executed_lines": [106, 107, 108, 109], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestRetryWithBackoff.test_max_retries_exceeded": {"executed_lines": [119, 120, 123, 124], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestRetryWithBackoff.test_max_retries_exceeded.always_fails": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "TestRetryWithBackoff.test_non_retryable_error_raises_immediately": {"executed_lines": [129, 131, 132, 137, 138, 140], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestRetryWithBackoff.test_non_retryable_error_raises_immediately.non_retryable_func": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestRetryWithBackoff.test_unexpected_error_wrapped": {"executed_lines": [145, 147, 148, 153, 154, 156, 157], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "TestRetryWithBackoff.test_unexpected_error_wrapped.unexpected_error_func": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestRetryWithBackoff.test_retry_with_conversion_timeout": {"executed_lines": [162, 164, 165, 172, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestRetryWithBackoff.test_retry_with_conversion_timeout.timeout_func": {"executed_lines": [167, 168, 169, 170], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestRetryWithBackoff.test_retry_with_model_unavailable": {"executed_lines": [178, 180, 181, 188, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestRetryWithBackoff.test_retry_with_model_unavailable.model_func": {"executed_lines": [183, 184, 185, 186], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestCategorizeError.test_categorize_invalid_input_error": {"executed_lines": [197, 198, 200, 201, 202], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestCategorizeError.test_categorize_ai_engine_error": {"executed_lines": [206, 207, 209, 210, 211], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestCategorizeError.test_categorize_model_unavailable_error": {"executed_lines": [215, 216, 218, 219], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213}, "TestCategorizeError.test_categorize_timeout_error": {"executed_lines": [223, 224, 226, 227], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestCategorizeError.test_categorize_generic_conversion_error": {"executed_lines": [231, 232, 234, 235], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestCategorizeError.test_categorize_generic_conversion_error_not_retryable": {"executed_lines": [239, 240, 242, 243], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "TestCategorizeError.test_categorize_unknown_error": {"executed_lines": [247, 248, 250, 251, 252], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestGetUserFriendlyError.test_invalid_input_message": {"executed_lines": [260, 261, 263], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 258}, "TestGetUserFriendlyError.test_service_unavailable_message": {"executed_lines": [267, 268, 270], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestGetUserFriendlyError.test_timeout_message": {"executed_lines": [274, 275, 277], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestGetUserFriendlyError.test_unknown_error_message": {"executed_lines": [281, 282, 284], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestErrorHandler.handler": {"executed_lines": [293], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "TestErrorHandler.test_init": {"executed_lines": [297, 298], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestErrorHandler.test_record_error": {"executed_lines": [302, 303, 305, 306], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestErrorHandler.test_record_error_multiple": {"executed_lines": [310, 311, 313], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 308}, "TestErrorHandler.test_record_error_different_types": {"executed_lines": [317, 318, 319, 321], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "TestErrorHandler.test_record_error_with_job_id": {"executed_lines": [325, 326], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestErrorHandler.test_get_error_stats": {"executed_lines": [331, 332, 333, 335, 337, 338, 339, 340], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestErrorHandler.test_should_alert_below_threshold": {"executed_lines": [344, 345, 347, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestErrorHandler.test_should_alert_above_threshold": {"executed_lines": [352, 353, 355, 356], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestErrorHandler.test_should_alert_outside_window": {"executed_lines": [360, 361, 363, 364], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358}, "TestErrorHandler.test_should_alert_no_errors": {"executed_lines": [368, 369], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 366}, "TestModuleFunctions.test_get_error_handler_singleton": {"executed_lines": [377, 378, 379, 380], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 375}, "TestModuleFunctions.test_get_error_handler_returns_same_instance": {"executed_lines": [384, 385, 386, 387], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 382}, "TestEdgeCases.test_retry_with_zero_max_retries": {"executed_lines": [396, 398, 399, 404, 405, 407], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394}, "TestEdgeCases.test_retry_with_zero_max_retries.func": {"executed_lines": [401, 402], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399}, "TestEdgeCases.test_retry_exponential_backoff": {"executed_lines": [412, 414, 416, 417, 423, 424, 427, 428, 429, 431], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 410}, "TestEdgeCases.test_retry_exponential_backoff.func": {"executed_lines": [418, 419, 420, 421], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 417}, "TestEdgeCases.test_error_handler_with_empty_stats": {"executed_lines": [435, 436, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 433}, "TestEdgeCases.test_categorize_error_with_none_message": {"executed_lines": [443, 444, 446], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 441}, "TestEdgeCases.test_retry_with_custom_exceptions": {"executed_lines": [451, 453, 454, 456, 459, 466, 467], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449}, "TestEdgeCases.test_retry_with_custom_exceptions.func": {"executed_lines": [461, 462, 463, 464], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "TestEdgeCases.test_multiple_error_handler_instances": {"executed_lines": [471, 472, 474, 476, 477], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 469}, "": {"executed_lines": [5, 6, 7, 8, 10, 24, 27, 34, 39, 45, 50, 56, 61, 67, 73, 80, 83, 84, 98, 99, 115, 116, 126, 127, 142, 143, 159, 160, 175, 176, 192, 195, 204, 213, 221, 229, 237, 245, 255, 258, 265, 272, 279, 287, 290, 291, 295, 300, 308, 315, 323, 329, 342, 350, 358, 366, 372, 375, 382, 390, 393, 394, 409, 410, 433, 441, 448, 449, 469], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionErrors": {"executed_lines": [29, 30, 31, 32, 36, 37, 41, 42, 43, 47, 48, 52, 53, 54, 58, 59, 63, 64, 65, 69, 70, 71, 75, 76, 77], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestRetryWithBackoff": {"executed_lines": [86, 88, 89, 91, 92, 94, 95, 96, 101, 103, 104, 106, 107, 108, 109, 111, 112, 113, 119, 120, 121, 123, 124, 129, 131, 132, 134, 135, 137, 138, 140, 145, 147, 148, 150, 151, 153, 154, 156, 157, 162, 164, 165, 167, 168, 169, 170, 172, 173, 178, 180, 181, 183, 184, 185, 186, 188, 189], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "TestCategorizeError": {"executed_lines": [197, 198, 200, 201, 202, 206, 207, 209, 210, 211, 215, 216, 218, 219, 223, 224, 226, 227, 231, 232, 234, 235, 239, 240, 242, 243, 247, 248, 250, 251, 252], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 192}, "TestGetUserFriendlyError": {"executed_lines": [260, 261, 263, 267, 268, 270, 274, 275, 277, 281, 282, 284], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestErrorHandler": {"executed_lines": [293, 297, 298, 302, 303, 305, 306, 310, 311, 313, 317, 318, 319, 321, 325, 326, 331, 332, 333, 335, 337, 338, 339, 340, 344, 345, 347, 348, 352, 353, 355, 356, 360, 361, 363, 364, 368, 369], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestModuleFunctions": {"executed_lines": [377, 378, 379, 380, 384, 385, 386, 387], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372}, "TestEdgeCases": {"executed_lines": [396, 398, 399, 401, 402, 404, 405, 407, 412, 414, 416, 417, 418, 419, 420, 421, 423, 424, 427, 428, 429, 431, 435, 436, 438, 439, 443, 444, 446, 451, 453, 454, 456, 459, 461, 462, 463, 464, 466, 467, 471, 472, 474, 476, 477], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 390}, "TestEdgeCases.test_retry_with_custom_exceptions.CustomRetryableError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "": {"executed_lines": [5, 6, 7, 8, 10, 24, 27, 34, 39, 45, 50, 56, 61, 67, 73, 80, 83, 84, 98, 99, 115, 116, 126, 127, 142, 143, 159, 160, 175, 176, 192, 195, 204, 213, 221, 229, 237, 245, 255, 258, 265, 272, 279, 287, 290, 291, 295, 300, 308, 315, 323, 329, 342, 350, 358, 366, 372, 375, 382, 390, 393, 394, 409, 410, 433, 441, 448, 449, 469], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_error_handlers_service.py": {"executed_lines": [7, 8, 9, 10, 11, 31, 32, 33, 34, 36, 37, 38, 41, 42, 43, 51, 52, 54, 55, 63, 64, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 91, 92, 94, 95, 96, 98, 99, 100, 102, 103, 104, 106, 107, 108, 111, 112, 113, 114, 115, 117, 118, 119, 120, 123, 124, 134, 135, 136, 137, 138, 141, 142, 143, 144, 145], "summary": {"covered_lines": 75, "num_statements": 81, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 92.5925925925926, "percent_statements_covered_display": "93"}, "missing_lines": [125, 126, 127, 128, 130, 131], "excluded_lines": [], "functions": {"TestIsDebugMode.test_is_debug_mode_default": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestIsDebugMode.test_is_debug_mode_true": {"executed_lines": [37, 38], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestErrorResponse.test_error_response_init": {"executed_lines": [43, 51, 52], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestErrorResponse.test_error_response_to_dict": {"executed_lines": [55, 63, 64], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestCustomExceptions.test_mod_porter_exception": {"executed_lines": [69, 70, 71], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestCustomExceptions.test_conversion_exception": {"executed_lines": [74, 75], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestCustomExceptions.test_file_processing_exception": {"executed_lines": [78, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestCustomExceptions.test_validation_exception": {"executed_lines": [82, 83], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestCustomExceptions.test_not_found_exception": {"executed_lines": [86, 87], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestCustomExceptions.test_rate_limit_exception": {"executed_lines": [90, 91, 92], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestCustomExceptions.test_parse_error": {"executed_lines": [95, 96], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestCustomExceptions.test_asset_error": {"executed_lines": [99, 100], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestCustomExceptions.test_logic_error": {"executed_lines": [103, 104], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestCustomExceptions.test_package_error": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestCategorizeError.test_categorize_validation_error": {"executed_lines": [113, 114, 115], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestCategorizeError.test_categorize_generic_exception": {"executed_lines": [118, 119, 120], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestCategorizeError.test_create_error_response_from_exception": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [125, 126, 127, 128, 130, 131], "excluded_lines": [], "start_line": 124}, "TestRegisterExceptionHandlers.test_register_exception_handlers": {"executed_lines": [136, 137, 138], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestVerifyExceptionHandlers.test_verify_exception_handlers": {"executed_lines": [143, 144, 145], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "": {"executed_lines": [7, 8, 9, 10, 11, 31, 32, 36, 41, 42, 54, 67, 68, 73, 77, 81, 85, 89, 94, 98, 102, 106, 111, 112, 117, 123, 124, 134, 135, 141, 142], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestIsDebugMode": {"executed_lines": [33, 34, 37, 38], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestErrorResponse": {"executed_lines": [43, 51, 52, 55, 63, 64], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestCustomExceptions": {"executed_lines": [69, 70, 71, 74, 75, 78, 79, 82, 83, 86, 87, 90, 91, 92, 95, 96, 99, 100, 103, 104, 107, 108], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestCategorizeError": {"executed_lines": [113, 114, 115, 118, 119, 120], "summary": {"covered_lines": 6, "num_statements": 12, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [125, 126, 127, 128, 130, 131], "excluded_lines": [], "start_line": 111}, "TestRegisterExceptionHandlers": {"executed_lines": [136, 137, 138], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "TestVerifyExceptionHandlers": {"executed_lines": [143, 144, 145], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141}, "": {"executed_lines": [7, 8, 9, 10, 11, 31, 32, 36, 41, 42, 54, 67, 68, 73, 77, 81, 85, 89, 94, 98, 102, 106, 111, 112, 117, 123, 124, 134, 135, 141, 142], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_error_handling.py": {"executed_lines": [7, 8, 9, 10, 13, 16, 19, 21, 23, 34, 35, 36, 38, 40, 54, 55, 56, 59, 60, 63, 64, 65, 68, 69, 70, 73, 74, 77, 78, 79, 80, 83, 86, 88, 91, 92, 94, 96, 98, 99, 101, 103, 105, 106, 108, 110, 112, 113, 116, 119, 121, 123, 124, 125, 126, 127, 128, 130, 132, 134, 141, 142, 143, 144, 145, 147, 149, 151, 154, 156, 158, 160, 162, 169, 172, 175, 177, 179, 182, 183, 184, 187, 190, 192, 198, 199, 202, 205, 208, 211, 214, 219, 221, 223, 228, 229, 230, 231, 235, 239, 240, 241, 242, 244, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260, 263, 266, 268, 269, 276, 277, 278, 279, 283, 285, 286, 288, 292, 294, 295, 297, 298, 303, 306, 308, 315, 316, 319, 320, 321, 324, 325, 327, 329, 332, 334, 335, 341], "summary": {"covered_lines": 149, "num_statements": 156, "percent_covered": 95.51282051282051, "percent_covered_display": "96", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 95.51282051282051, "percent_statements_covered_display": "96"}, "missing_lines": [280, 281, 289, 290, 299, 300, 342], "excluded_lines": [], "functions": {"TestErrorCategories.test_error_categories_defined": {"executed_lines": [21, 23, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestErrorCategories.test_custom_exceptions": {"executed_lines": [40, 54, 55, 56, 59, 60, 63, 64, 65, 68, 69, 70, 73, 74, 77, 78, 79, 80], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestErrorCategorization.test_categorize_parse_error": {"executed_lines": [88, 91, 92], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestErrorCategorization.test_categorize_asset_error": {"executed_lines": [96, 98, 99], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestErrorCategorization.test_categorize_logic_error": {"executed_lines": [103, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestErrorCategorization.test_categorize_package_error": {"executed_lines": [110, 112, 113], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestRetryLogic.test_retry_config_defaults": {"executed_lines": [121, 123, 124, 125, 126, 127, 128], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestRetryLogic.test_retry_config_custom": {"executed_lines": [132, 134, 141, 142, 143, 144, 145], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestRetryLogic.test_calculate_delay": {"executed_lines": [149, 151, 154, 156, 158], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestRetryLogic.test_is_retryable": {"executed_lines": [162, 169, 172, 175], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestRetryLogic.test_categorize_error_function": {"executed_lines": [179, 182, 183, 184], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestConversionFailureAnalysis.test_failure_severity_determination": {"executed_lines": [192, 198, 199, 202, 205, 208, 211, 214, 219], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestConversionFailureAnalysis.test_failure_source_determination": {"executed_lines": [223, 228, 229, 230, 231, 235, 239, 240, 241, 242], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestConversionFailureAnalysis.test_recovery_suggestions": {"executed_lines": [246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestErrorMetrics.test_metrics_import": {"executed_lines": [268, 269, 276, 277, 278, 279], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [280, 281], "excluded_lines": [], "start_line": 266}, "TestErrorMetrics.test_record_error_function": {"executed_lines": [285, 286, 288], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [289, 290], "excluded_lines": [], "start_line": 283}, "TestErrorMetrics.test_record_retry_functions": {"executed_lines": [294, 295, 297, 298], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [299, 300], "excluded_lines": [], "start_line": 292}, "TestStructuredLogging.test_correlation_id_context": {"executed_lines": [308, 315, 316, 319, 320, 321, 324, 325], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306}, "TestStructuredLogging.test_log_context_manager": {"executed_lines": [329, 332, 334, 335], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 327}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 19, 38, 83, 86, 94, 101, 108, 116, 119, 130, 147, 160, 177, 187, 190, 221, 244, 263, 266, 283, 292, 303, 306, 327, 341], "summary": {"covered_lines": 31, "num_statements": 32, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97"}, "missing_lines": [342], "excluded_lines": [], "start_line": 1}}, "classes": {"TestErrorCategories": {"executed_lines": [21, 23, 34, 35, 36, 40, 54, 55, 56, 59, 60, 63, 64, 65, 68, 69, 70, 73, 74, 77, 78, 79, 80], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestErrorCategorization": {"executed_lines": [88, 91, 92, 96, 98, 99, 103, 105, 106, 110, 112, 113], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestRetryLogic": {"executed_lines": [121, 123, 124, 125, 126, 127, 128, 132, 134, 141, 142, 143, 144, 145, 149, 151, 154, 156, 158, 162, 169, 172, 175, 179, 182, 183, 184], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestConversionFailureAnalysis": {"executed_lines": [192, 198, 199, 202, 205, 208, 211, 214, 219, 223, 228, 229, 230, 231, 235, 239, 240, 241, 242, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 260], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestErrorMetrics": {"executed_lines": [268, 269, 276, 277, 278, 279, 285, 286, 288, 294, 295, 297, 298], "summary": {"covered_lines": 13, "num_statements": 19, "percent_covered": 68.42105263157895, "percent_covered_display": "68", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 68.42105263157895, "percent_statements_covered_display": "68"}, "missing_lines": [280, 281, 289, 290, 299, 300], "excluded_lines": [], "start_line": 263}, "TestStructuredLogging": {"executed_lines": [308, 315, 316, 319, 320, 321, 324, 325, 329, 332, 334, 335], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 19, 38, 83, 86, 94, 101, 108, 116, 119, 130, 147, 160, 177, 187, 190, 221, 244, 263, 266, 283, 292, 303, 306, 327, 341], "summary": {"covered_lines": 31, "num_statements": 32, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.875, "percent_statements_covered_display": "97"}, "missing_lines": [342], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_error_recovery.py": {"executed_lines": [3, 4, 5, 6, 8, 20, 25, 32, 35, 37, 38, 39, 40, 41, 42, 45, 48, 50, 56, 57, 58, 59, 60, 61, 63, 65, 66, 68, 75, 78, 81, 83, 84, 90, 96, 97, 98, 99, 100, 101, 103, 105, 111, 113, 115, 122, 125, 128, 130, 132, 134, 136, 138, 140, 141, 143, 145, 147, 148, 150, 152, 154, 156, 158, 159, 161, 163, 164, 167, 170, 172, 173, 174, 179, 185, 187, 188, 190, 192, 193, 195, 197, 200, 203, 205, 206, 208, 209, 211, 212, 214, 215, 217, 224, 230, 231, 233, 234, 236, 237, 239, 246, 252, 253, 254, 256, 257, 259, 260, 262, 269, 275, 276, 278, 279, 281, 282, 284, 291, 297, 298, 300, 301, 303, 304, 306, 313, 319, 320, 321, 323, 324, 326, 327, 329, 336, 342, 343, 346, 349, 351, 353, 354, 355, 356, 357, 359, 360, 362, 365, 367, 369, 370, 371, 372, 374, 375, 377, 379, 380, 382, 384, 385, 387, 388, 390, 391, 393, 395, 396, 398, 400, 401, 403, 405, 406, 407, 409, 410, 412, 413, 416, 419, 422, 424, 425, 427, 430, 433, 434, 436, 437, 439, 442, 445, 447, 448, 450, 451, 453, 455, 456, 458, 459, 461, 463, 465, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 497, 500, 502, 503, 505, 506, 507, 510, 513, 514, 516, 518, 519, 524, 525, 527, 528, 530, 532, 533, 535, 536, 541], "summary": {"covered_lines": 245, "num_statements": 245, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestRecoveryStatus.test_status_values": {"executed_lines": [37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestRecoveryAttempt.test_recovery_attempt_creation": {"executed_lines": [50, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestRecoveryAttempt.test_recovery_attempt_duration": {"executed_lines": [65, 66, 68, 75], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestRecoveryResult.test_recovery_result_creation": {"executed_lines": [83, 84, 90, 96, 97, 98, 99, 100, 101], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestRecoveryResult.test_recovery_result_succeeded_property": {"executed_lines": [105, 111], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestRecoveryResult.test_recovery_result_degraded_property": {"executed_lines": [115, 122], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestDegradedModeManager.test_enable_degraded_mode": {"executed_lines": [130, 132, 134], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestDegradedModeManager.test_disable_degraded_mode": {"executed_lines": [138, 140, 141, 143], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestDegradedModeManager.test_get_fallback_handler": {"executed_lines": [147, 148, 150, 152], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "TestDegradedModeManager.test_get_all_degraded_features": {"executed_lines": [156, 158, 159, 161, 163, 164], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestEscalationManager.test_escalate_error": {"executed_lines": [172, 173, 174, 179, 185, 187, 188], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TestEscalationManager.test_register_handler": {"executed_lines": [192, 193, 195, 197], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestRecoveryStrategyExecutor.test_executor_initialization": {"executed_lines": [205, 206, 208, 209], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestRecoveryStrategyExecutor.test_execute_degraded_mode": {"executed_lines": [214, 215, 217, 224, 230, 231], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestRecoveryStrategyExecutor.test_execute_skip_and_continue": {"executed_lines": [236, 237, 239, 246, 252, 253, 254], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 234}, "TestRecoveryStrategyExecutor.test_execute_use_cache": {"executed_lines": [259, 260, 262, 269, 275, 276], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestRecoveryStrategyExecutor.test_execute_use_cache_no_cached_result": {"executed_lines": [281, 282, 284, 291, 297, 298], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestRecoveryStrategyExecutor.test_execute_use_default": {"executed_lines": [303, 304, 306, 313, 319, 320, 321], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "TestRecoveryStrategyExecutor.test_execute_notify_user": {"executed_lines": [326, 327, 329, 336, 342, 343], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "TestErrorSupervisor.test_supervisor_initialization": {"executed_lines": [351, 353, 354, 355, 356, 357], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "TestErrorSupervisor.test_supervise_network_error_succeeds_with_retry": {"executed_lines": [362, 365, 367, 374, 375, 377], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "TestErrorSupervisor.test_supervise_network_error_succeeds_with_retry.mock_operation": {"executed_lines": [369, 370, 371, 372], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestErrorSupervisor.test_supervise_classifies_error": {"executed_lines": [382, 384, 385, 387, 388], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "TestErrorSupervisor.test_supervise_creates_attempts": {"executed_lines": [393, 395, 396, 398], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391}, "TestErrorSupervisor.test_supervise_logic_error_escalates": {"executed_lines": [403, 405, 406, 407, 409, 410, 412, 413, 416], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestGetSupervisor.test_get_supervisor_returns_same_instance": {"executed_lines": [424, 425, 427], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 422}, "TestRecoverFunction.test_recover_classifies_error": {"executed_lines": [436, 437, 439], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 434}, "TestErrorPatternLibraryIntegration.test_library_has_network_pattern": {"executed_lines": [447, 448, 450, 451], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 445}, "TestErrorPatternLibraryIntegration.test_library_has_timeout_pattern": {"executed_lines": [455, 456, 458, 459], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "TestErrorPatternLibraryIntegration.test_library_has_all_error_type_patterns": {"executed_lines": [463, 465, 466, 468], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 461}, "TestErrorPatternLibraryIntegration.test_should_escalate_logic": {"executed_lines": [472, 474], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 470}, "TestErrorPatternLibraryIntegration.test_should_escalate_auth": {"executed_lines": [478, 480], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476}, "TestErrorPatternLibraryIntegration.test_should_not_escalate_network": {"executed_lines": [484, 486], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482}, "TestErrorPatternLibraryIntegration.test_get_fallback_mode_network": {"executed_lines": [490, 492, 494], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488}, "TestRecoveryActionsOrdering.test_actions_sorted_by_success_rate": {"executed_lines": [502, 503, 505, 506, 507], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 500}, "TestSupervisorWithContext.test_supervise_with_job_context": {"executed_lines": [516, 518, 519, 524, 525], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 514}, "TestSupervisorWithContext.test_supervise_with_operation_and_context": {"executed_lines": [530, 532, 535, 536, 541], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528}, "TestSupervisorWithContext.test_supervise_with_operation_and_context.mock_op": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532}, "": {"executed_lines": [3, 4, 5, 6, 8, 20, 25, 32, 35, 45, 48, 63, 78, 81, 103, 113, 125, 128, 136, 145, 154, 167, 170, 190, 200, 203, 211, 212, 233, 234, 256, 257, 278, 279, 300, 301, 323, 324, 346, 349, 359, 360, 379, 380, 390, 391, 400, 401, 419, 422, 430, 433, 434, 442, 445, 453, 461, 470, 476, 482, 488, 497, 500, 510, 513, 514, 527, 528], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRecoveryStatus": {"executed_lines": [37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestRecoveryAttempt": {"executed_lines": [50, 56, 57, 58, 59, 60, 61, 65, 66, 68, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestRecoveryResult": {"executed_lines": [83, 84, 90, 96, 97, 98, 99, 100, 101, 105, 111, 115, 122], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestDegradedModeManager": {"executed_lines": [130, 132, 134, 138, 140, 141, 143, 147, 148, 150, 152, 156, 158, 159, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestEscalationManager": {"executed_lines": [172, 173, 174, 179, 185, 187, 188, 192, 193, 195, 197], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestRecoveryStrategyExecutor": {"executed_lines": [205, 206, 208, 209, 214, 215, 217, 224, 230, 231, 236, 237, 239, 246, 252, 253, 254, 259, 260, 262, 269, 275, 276, 281, 282, 284, 291, 297, 298, 303, 304, 306, 313, 319, 320, 321, 326, 327, 329, 336, 342, 343], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestErrorSupervisor": {"executed_lines": [351, 353, 354, 355, 356, 357, 362, 365, 367, 369, 370, 371, 372, 374, 375, 377, 382, 384, 385, 387, 388, 393, 395, 396, 398, 403, 405, 406, 407, 409, 410, 412, 413, 416], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "TestGetSupervisor": {"executed_lines": [424, 425, 427], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestRecoverFunction": {"executed_lines": [436, 437, 439], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 430}, "TestErrorPatternLibraryIntegration": {"executed_lines": [447, 448, 450, 451, 455, 456, 458, 459, 463, 465, 466, 468, 472, 474, 478, 480, 484, 486, 490, 492, 494], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 442}, "TestRecoveryActionsOrdering": {"executed_lines": [502, 503, 505, 506, 507], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 497}, "TestSupervisorWithContext": {"executed_lines": [516, 518, 519, 524, 525, 530, 532, 533, 535, 536, 541], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 510}, "": {"executed_lines": [3, 4, 5, 6, 8, 20, 25, 32, 35, 45, 48, 63, 78, 81, 103, 113, 125, 128, 136, 145, 154, 167, 170, 190, 200, 203, 211, 212, 233, 234, 256, 257, 278, 279, 300, 301, 323, 324, 346, 349, 359, 360, 379, 380, 390, 391, 400, 401, 419, 422, 430, 433, 434, 442, 445, 453, 461, 470, 476, 482, 488, 497, 500, 510, 513, 514, 527, 528], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_feature_flags_service.py": {"executed_lines": [7, 8, 9, 10, 23, 24, 26, 27, 28, 29, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 68, 69, 70, 71, 73, 74, 76, 78, 79, 81, 82, 83, 84, 86, 87, 89, 90, 91, 93, 94, 95, 96, 98, 99, 100, 101, 103, 104, 105, 106, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 121, 122, 124, 125, 126, 127, 130, 131, 132, 133, 135, 136, 137, 139, 141, 142, 143, 145, 146, 149, 152, 153, 154, 155, 157, 158, 161, 162, 164, 165, 166, 168, 169, 170, 172, 175, 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, 189, 190, 191, 192, 193], "summary": {"covered_lines": 129, "num_statements": 131, "percent_covered": 98.47328244274809, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 98.47328244274809, "percent_statements_covered_display": "98"}, "missing_lines": [147, 159], "excluded_lines": [], "functions": {"clean_manager": {"executed_lines": [26, 27, 28, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestFeatureFlagType.test_feature_flag_type_values": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestFeatureFlag.test_feature_flag_init_boolean": {"executed_lines": [41, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestFeatureFlag.test_feature_flag_init_percentage": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestFeatureFlag.test_feature_flag_init_variant": {"executed_lines": [51, 52, 53], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestFeatureFlag.test_to_dict": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestFeatureFlag.test_from_dict": {"executed_lines": [62, 63, 64, 65], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestFeatureFlagManager.manager": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestFeatureFlagManager.test_manager_init": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestFeatureFlagManager.test_register_flag": {"executed_lines": [78, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestFeatureFlagManager.test_get_flag": {"executed_lines": [82, 83, 84], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestFeatureFlagManager.test_get_flag_not_found": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestFeatureFlagManager.test_is_enabled": {"executed_lines": [90, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestFeatureFlagManager.test_enable": {"executed_lines": [94, 95, 96], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestFeatureFlagManager.test_disable": {"executed_lines": [99, 100, 101], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestFeatureFlagManager.test_unregister_flag": {"executed_lines": [104, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestFeatureFlagManager.test_list_flags": {"executed_lines": [109, 110, 111, 112], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestIsFeatureEnabled.test_is_feature_enabled_with_manager": {"executed_lines": [117, 118, 119], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestIsFeatureEnabled.test_is_feature_enabled_not_found": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestIsFeatureEnabled.test_is_feature_enabled_disabled": {"executed_lines": [125, 126, 127], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestFeatureFlagDecorator.test_decorator_enabled": {"executed_lines": [132, 133, 135, 136, 139], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "TestFeatureFlagDecorator.test_decorator_enabled.test_func": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestFeatureFlagDecorator.test_decorator_disabled": {"executed_lines": [142, 143, 145, 146, 149], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141}, "TestFeatureFlagDecorator.test_decorator_disabled.test_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [147], "excluded_lines": [], "start_line": 146}, "TestRequireFeature.test_require_feature_raises_when_disabled": {"executed_lines": [154, 155, 157, 158, 161, 162], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestRequireFeature.test_require_feature_raises_when_disabled.test_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [159], "excluded_lines": [], "start_line": 158}, "TestRequireFeature.test_require_feature_passes_when_enabled": {"executed_lines": [165, 166, 168, 169, 172], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestRequireFeature.test_require_feature_passes_when_enabled.test_func": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "TestPercentageFlags.test_percentage_rollout_100": {"executed_lines": [177, 178, 179, 180], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestPercentageFlags.test_percentage_rollout_0": {"executed_lines": [183, 184, 185, 186], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "TestLoadFromEnv.test_load_from_env_var": {"executed_lines": [191, 192, 193], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "": {"executed_lines": [7, 8, 9, 10, 23, 24, 32, 33, 39, 40, 46, 50, 55, 61, 68, 69, 70, 73, 76, 81, 86, 89, 93, 98, 103, 108, 115, 116, 121, 124, 130, 131, 141, 152, 153, 164, 175, 176, 182, 189, 190], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeatureFlagType": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestFeatureFlag": {"executed_lines": [41, 42, 43, 44, 47, 48, 51, 52, 53, 56, 57, 58, 59, 62, 63, 64, 65], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestFeatureFlagManager": {"executed_lines": [71, 74, 78, 79, 82, 83, 84, 87, 90, 91, 94, 95, 96, 99, 100, 101, 104, 105, 106, 109, 110, 111, 112], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestIsFeatureEnabled": {"executed_lines": [117, 118, 119, 122, 125, 126, 127], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestFeatureFlagDecorator": {"executed_lines": [132, 133, 135, 136, 137, 139, 142, 143, 145, 146, 149], "summary": {"covered_lines": 11, "num_statements": 12, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92"}, "missing_lines": [147], "excluded_lines": [], "start_line": 130}, "TestRequireFeature": {"executed_lines": [154, 155, 157, 158, 161, 162, 165, 166, 168, 169, 170, 172], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92"}, "missing_lines": [159], "excluded_lines": [], "start_line": 152}, "TestPercentageFlags": {"executed_lines": [177, 178, 179, 180, 183, 184, 185, 186], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "TestLoadFromEnv": {"executed_lines": [191, 192, 193], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "": {"executed_lines": [7, 8, 9, 10, 23, 24, 26, 27, 28, 29, 32, 33, 39, 40, 46, 50, 55, 61, 68, 69, 70, 73, 76, 81, 86, 89, 93, 98, 103, 108, 115, 116, 121, 124, 130, 131, 141, 152, 153, 164, 175, 176, 182, 189, 190], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_feedback_analytics.py": {"executed_lines": [5, 6, 7, 14, 17, 18, 20, 22, 23, 25, 26, 57, 59, 60, 61, 62, 64, 66, 67, 68, 69, 71, 73, 74, 75, 76, 78, 80, 81, 84, 85, 87, 89, 90, 92, 93, 97, 98, 99, 100, 101, 103, 105, 106, 108, 109, 113, 114, 116, 118, 119, 125, 132, 134, 135, 136, 138, 140, 141, 148, 156, 158, 159, 161, 163, 164, 166, 167, 171, 172, 173, 175, 177, 178, 180, 181, 182, 184, 185, 186, 187, 188, 190, 192, 193, 194, 197, 200, 202, 211, 212, 213], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestFeedbackAnalyticsService.service": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestFeedbackAnalyticsService.sample_feedback": {"executed_lines": [25, 26], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestFeedbackAnalyticsService.test_add_feedback": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestFeedbackAnalyticsService.test_add_bug_report": {"executed_lines": [66, 67, 68, 69], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestFeedbackAnalyticsService.test_add_feature_request": {"executed_lines": [73, 74, 75, 76], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestFeedbackAnalyticsService.test_get_satisfaction_score_empty": {"executed_lines": [80, 81, 84, 85], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestFeedbackAnalyticsService.test_get_satisfaction_score_with_data": {"executed_lines": [89, 90, 92, 93, 97, 98, 99, 100, 101], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestFeedbackAnalyticsService.test_get_feedback_by_type": {"executed_lines": [105, 106, 108, 109, 113, 114], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestFeedbackAnalyticsService.test_get_bug_summary": {"executed_lines": [118, 119, 125, 132, 134, 135, 136], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestFeedbackAnalyticsService.test_get_feature_request_summary": {"executed_lines": [140, 141, 148, 156, 158, 159], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestFeedbackAnalyticsService.test_conversion_feedback_correlation": {"executed_lines": [163, 164, 166, 167, 171, 172, 173], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestFeedbackAnalyticsService.test_get_weekly_report": {"executed_lines": [177, 178, 180, 181, 182, 184, 185, 186, 187, 188], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "TestFeedbackAnalyticsService.test_singleton_pattern": {"executed_lines": [192, 193, 194], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestFeedbackMetrics.test_feedback_metrics_creation": {"executed_lines": [202, 211, 212, 213], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "": {"executed_lines": [5, 6, 7, 14, 17, 18, 22, 23, 57, 64, 71, 78, 87, 103, 116, 138, 161, 175, 190, 197, 200], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeedbackAnalyticsService": {"executed_lines": [20, 25, 26, 59, 60, 61, 62, 66, 67, 68, 69, 73, 74, 75, 76, 80, 81, 84, 85, 89, 90, 92, 93, 97, 98, 99, 100, 101, 105, 106, 108, 109, 113, 114, 118, 119, 125, 132, 134, 135, 136, 140, 141, 148, 156, 158, 159, 163, 164, 166, 167, 171, 172, 173, 177, 178, 180, 181, 182, 184, 185, 186, 187, 188, 192, 193, 194], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestFeedbackMetrics": {"executed_lines": [202, 211, 212, 213], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "": {"executed_lines": [5, 6, 7, 14, 17, 18, 22, 23, 57, 64, 71, 78, 87, 103, 116, 138, 161, 175, 190, 197, 200], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_feedback_analytics_coverage.py": {"executed_lines": [5, 6, 7, 14, 17, 18, 20, 22, 24, 25, 27, 28, 30, 31, 33, 35, 36, 37, 39, 41, 42, 43, 46, 47, 48, 49, 51, 53, 55, 56, 57, 58, 59, 61, 63, 65, 66, 67, 68, 70, 71, 72, 74, 76, 77, 78, 80, 81, 82, 83, 85, 87, 88, 89, 91, 92, 93, 94, 96, 98, 100, 106, 112, 114, 115, 116, 117, 119, 120, 121, 123, 125, 126, 128, 130, 132, 133, 134, 135, 137, 139, 140, 141, 142], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestFeedbackAnalyticsServiceCoverage.service": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestFeedbackAnalyticsServiceCoverage.test_add_methods": {"executed_lines": [24, 25, 27, 28, 30, 31], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestFeedbackAnalyticsServiceCoverage.test_get_satisfaction_score_empty": {"executed_lines": [35, 36, 37], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestFeedbackAnalyticsServiceCoverage.test_get_satisfaction_score_calculation": {"executed_lines": [41, 42, 43, 46, 47, 48, 49, 51, 53, 55, 56, 57, 58, 59, 61], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestFeedbackAnalyticsServiceCoverage.test_get_feedback_by_type": {"executed_lines": [65, 66, 67, 68, 70, 71, 72], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestFeedbackAnalyticsServiceCoverage.test_get_bug_summary": {"executed_lines": [76, 77, 78, 80, 81, 82, 83], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestFeedbackAnalyticsServiceCoverage.test_get_feature_request_summary": {"executed_lines": [87, 88, 89, 91, 92, 93, 94], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestFeedbackAnalyticsServiceCoverage.test_get_conversion_feedback_correlation": {"executed_lines": [98, 100, 106, 112, 114, 115, 116, 117, 119, 120, 121], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "TestFeedbackAnalyticsServiceCoverage.test_get_weekly_report": {"executed_lines": [125, 126, 128, 130, 132, 133, 134, 135], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TestFeedbackAnalyticsServiceCoverage.test_get_feedback_analytics_singleton": {"executed_lines": [139, 140, 141, 142], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "": {"executed_lines": [5, 6, 7, 14, 17, 18, 22, 33, 39, 63, 74, 85, 96, 123, 137], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeedbackAnalyticsServiceCoverage": {"executed_lines": [20, 24, 25, 27, 28, 30, 31, 35, 36, 37, 41, 42, 43, 46, 47, 48, 49, 51, 53, 55, 56, 57, 58, 59, 61, 65, 66, 67, 68, 70, 71, 72, 76, 77, 78, 80, 81, 82, 83, 87, 88, 89, 91, 92, 93, 94, 98, 100, 106, 112, 114, 115, 116, 117, 119, 120, 121, 125, 126, 128, 130, 132, 133, 134, 135, 139, 140, 141, 142], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [5, 6, 7, 14, 17, 18, 22, 33, 39, 63, 74, 85, 96, 123, 137], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_file_handler.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 39, 40, 42, 45, 46, 47, 49, 50, 51, 52, 54, 55, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 88, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 102, 107, 108, 109, 110, 112, 113], "summary": {"covered_lines": 80, "num_statements": 80, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"file_handler": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "test_validate_jar_file_not_found": {"executed_lines": [14, 15, 16, 17], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "test_validate_jar_empty_file": {"executed_lines": [21, 23, 24, 25], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "test_validate_jar_invalid_zip": {"executed_lines": [29, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "test_validate_jar_valid": {"executed_lines": [38, 39, 40, 42, 45, 46, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "test_identify_mod_loader_fabric": {"executed_lines": [51, 52, 54, 55, 56], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "test_identify_mod_loader_forge": {"executed_lines": [60, 61, 63, 64, 65], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "test_identify_mod_loader_neoforge": {"executed_lines": [69, 70, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "test_extract_metadata_fabric": {"executed_lines": [78, 79, 80, 88, 90, 91, 92, 93, 94, 95], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "test_process_file_success": {"executed_lines": [99, 100, 102, 107, 108, 109, 110, 112, 113], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 19, 20, 27, 28, 36, 37, 49, 50, 58, 59, 67, 68, 76, 77, 97, 98], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 32, 33, 34, 36, 37, 38, 39, 40, 42, 45, 46, 47, 49, 50, 51, 52, 54, 55, 56, 58, 59, 60, 61, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 88, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 102, 107, 108, 109, 110, 112, 113], "summary": {"covered_lines": 80, "num_statements": 80, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_file_processor.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 19, 21, 22, 25, 26, 28, 31, 32, 34, 35, 36, 39, 40, 42, 49, 50, 53, 54, 55, 56, 59, 60, 61, 64, 67, 68, 69, 71, 73, 74, 78, 83, 87, 88, 90, 91, 92, 93, 94, 101, 105, 106, 107, 110, 111, 112, 115, 119, 120, 122, 123, 127, 128, 131, 132, 133, 134, 135, 136, 138, 139, 140, 143, 144, 146, 147, 149, 150, 152, 153, 157, 158, 161, 163, 164, 165, 166, 167, 169, 170, 174, 175, 184, 185, 186, 187, 192, 200, 204, 205, 207, 208, 209, 213, 214, 228, 229, 238, 240, 241, 242, 245, 247, 250, 251, 256, 257, 258, 263, 266, 270, 271, 272, 274, 275, 276, 279, 280, 281, 284, 286, 287, 290, 291, 295, 296, 297, 300, 301, 303, 304, 305, 306, 307, 308, 312, 313, 314, 316, 319, 323, 324, 326, 327, 328, 330, 333, 337, 338, 340, 341, 342, 344, 347, 351, 352, 354, 355, 356, 357, 358, 361, 362, 367, 368, 369, 371, 374, 375, 376, 377, 379, 380, 383, 384, 385, 387, 390, 391, 393, 394, 397, 398, 399, 403, 404, 405, 409, 410, 411, 413, 414, 417, 418, 420, 424, 425, 426, 428, 429, 432, 433, 434, 436, 440, 441, 442, 444, 445, 448, 451, 455, 456, 457, 460, 462, 463, 464, 466, 468, 469, 471, 472, 479, 480, 482, 483, 485, 488, 489, 492, 494, 495, 496, 500, 504, 505, 508, 509, 512, 514, 516, 517, 518, 523, 524, 526, 527, 531, 534, 535, 538, 539, 540, 542, 544, 545, 546, 551, 552, 554, 555, 564, 565, 569, 572, 573, 574, 575, 577, 579, 580, 582, 583, 587, 590, 591, 592, 593, 595, 597, 598, 599, 600, 602, 603, 607, 610, 611, 612, 613, 615, 617, 618, 619, 621, 622, 626, 627, 630, 631, 632, 635, 636, 637, 638, 640, 641, 645, 647, 648, 649, 650, 651, 653, 654, 658, 659, 661, 662, 663, 666, 667, 668, 669, 670, 671, 672, 674, 675, 679, 681, 682, 683, 684, 686, 687, 692, 693, 694, 696, 698, 699, 701, 702, 707, 708, 711, 714, 715, 717, 718, 722, 725, 726, 727, 728, 732, 734, 735, 737, 738, 742, 745, 746, 748, 749, 750, 752, 753, 757, 758, 760, 761, 762, 765, 766, 767, 768, 770, 771, 775, 778, 782, 797, 798, 801, 802, 803, 804, 805], "summary": {"covered_lines": 402, "num_statements": 408, "percent_covered": 98.52941176470588, "percent_covered_display": "99", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 98.52941176470588, "percent_statements_covered_display": "99"}, "missing_lines": [248, 486, 528, 529, 556, 557], "excluded_lines": [], "functions": {"file_processor": {"executed_lines": [19, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "mock_job_id": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "temp_job_dirs": {"executed_lines": [34, 35, 36, 39, 40, 42, 49, 50], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestFileProcessor.test_download_from_url_success_content_disposition": {"executed_lines": [59, 60, 61, 64, 67, 71, 73, 74, 78, 83, 87, 88, 90, 91, 92, 93, 94, 101], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestFileProcessor.test_download_from_url_success_content_disposition.mock_aiter_bytes": {"executed_lines": [68, 69], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestFileProcessor.test_download_from_url_success_url_path_filename": {"executed_lines": [110, 111, 112, 115, 119, 122, 123, 127, 128, 131, 132, 133, 134, 135, 136], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestFileProcessor.test_download_from_url_success_url_path_filename.mock_aiter_bytes": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestFileProcessor.test_download_from_url_success_content_type_extension": {"executed_lines": [143, 144, 146, 147, 149, 152, 153, 157, 158, 161, 163, 164, 165, 166, 167], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestFileProcessor.test_download_from_url_success_content_type_extension.mock_aiter_bytes": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "TestFileProcessor.test_download_from_url_http_errors": {"executed_lines": [184, 185, 186, 187, 192, 200, 204, 205, 207, 208, 209], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "TestFileProcessor.test_download_from_url_network_io_exceptions": {"executed_lines": [238, 240, 241, 242, 245, 247, 250, 251, 256, 257, 258, 263, 266, 270, 271, 272], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestFileProcessor.test_download_from_url_network_io_exceptions.mock_aiter_bytes_io": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [248], "excluded_lines": [], "start_line": 247}, "TestFileProcessor.test_download_from_url_empty_file": {"executed_lines": [279, 280, 281, 284, 286, 290, 291, 295, 296, 297, 300, 301, 303, 304, 305, 306, 307, 308], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "TestFileProcessor.test_download_from_url_empty_file.mock_aiter_bytes_empty": {"executed_lines": [287], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 286}, "TestFileProcessor.test_is_safe_url_public_ip": {"executed_lines": [316, 319, 323, 324], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "TestFileProcessor.test_is_safe_url_private_ip": {"executed_lines": [330, 333, 337, 338], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "TestFileProcessor.test_is_safe_url_loopback_ip": {"executed_lines": [344, 347, 351, 352], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestFileProcessor.test_is_safe_url_bad_scheme": {"executed_lines": [356, 357, 358], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestFileProcessor.test_validate_downloaded_file_valid": {"executed_lines": [367, 368, 369, 371, 374, 375, 376, 377], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestFileProcessor.test_validate_downloaded_file_valid_jar_extension": {"executed_lines": [383, 384, 385, 387, 390, 391], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "TestFileProcessor.test_validate_downloaded_file_oversized": {"executed_lines": [397, 398, 399, 403, 404, 405, 409, 410, 411], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394}, "TestFileProcessor.test_validate_downloaded_file_empty": {"executed_lines": [417, 418, 420, 424, 425, 426], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestFileProcessor.test_validate_downloaded_file_invalid_magic_number": {"executed_lines": [432, 433, 434, 436, 440, 441, 442], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429}, "TestFileProcessor.test_validate_downloaded_file_not_found": {"executed_lines": [448, 451, 455, 456, 457], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 445}, "TestFileProcessor.test_cleanup_temp_files_success": {"executed_lines": [462, 463, 464, 466, 468, 469, 471, 472, 479, 480], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460}, "TestFileProcessor.test_cleanup_temp_files_dir_not_exist": {"executed_lines": [483, 485, 488, 489, 492, 494, 495, 496], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [486], "excluded_lines": [], "start_line": 482}, "TestFileProcessor.test_cleanup_temp_files_permission_error": {"executed_lines": [508, 509, 512, 514, 516, 517, 518, 523, 524, 526, 527], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [528, 529], "excluded_lines": [], "start_line": 505}, "TestFileProcessor.test_cleanup_temp_files_generic_error": {"executed_lines": [538, 539, 540, 542, 544, 545, 546, 551, 552, 554, 555], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [556, 557], "excluded_lines": [], "start_line": 535}, "TestFileProcessor.test_scan_for_malware_safe_zip": {"executed_lines": [569, 572, 573, 574, 575, 577, 579, 580], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 565}, "TestFileProcessor.test_scan_for_malware_path_traversal_dotdot": {"executed_lines": [587, 590, 591, 592, 593, 595, 597, 598, 599, 600], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 583}, "TestFileProcessor.test_scan_for_malware_path_traversal_absolute": {"executed_lines": [607, 610, 611, 612, 613, 615, 617, 618, 619], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603}, "TestFileProcessor.test_scan_for_malware_zip_bomb_compression_ratio": {"executed_lines": [626, 627, 630, 631, 632, 635, 636, 637, 638, 640, 641, 645, 647, 648, 649, 650, 651], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 622}, "TestFileProcessor.test_scan_for_malware_excessive_files": {"executed_lines": [658, 659, 661, 662, 663, 666, 667, 668, 669, 670, 671, 672, 674, 675, 679, 681, 682, 683, 684], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 654}, "TestFileProcessor.test_scan_for_malware_corrupted_archive": {"executed_lines": [692, 693, 694, 696, 698, 699], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 687}, "TestFileProcessor.test_scan_for_malware_unsupported_file_type": {"executed_lines": [707, 708, 711, 714, 715], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 702}, "TestFileProcessor.test_scan_for_malware_jar_file": {"executed_lines": [722, 725, 726, 727, 728, 732, 734, 735], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 718}, "TestFileProcessor.test_scan_for_malware_exception_handling": {"executed_lines": [742, 745, 746, 748, 749, 750], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 738}, "TestFileProcessor.test_scan_for_malware_edge_case_zero_compression": {"executed_lines": [757, 758, 760, 761, 762, 765, 766, 767, 768, 770, 771, 775, 778], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 753}, "test_file_processor_instantiation": {"executed_lines": [798], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 797}, "test_temp_job_dirs_fixture": {"executed_lines": [802, 803, 804, 805], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 801}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 25, 26, 31, 32, 53, 54, 55, 56, 105, 106, 107, 138, 139, 140, 169, 170, 174, 175, 213, 214, 228, 229, 274, 275, 276, 312, 313, 314, 326, 327, 328, 340, 341, 342, 354, 355, 361, 362, 379, 380, 393, 394, 413, 414, 428, 429, 444, 445, 460, 482, 500, 504, 505, 531, 534, 535, 564, 565, 582, 583, 602, 603, 621, 622, 653, 654, 686, 687, 701, 702, 717, 718, 737, 738, 752, 753, 782, 797, 801], "summary": {"covered_lines": 90, "num_statements": 90, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFileProcessor": {"executed_lines": [59, 60, 61, 64, 67, 68, 69, 71, 73, 74, 78, 83, 87, 88, 90, 91, 92, 93, 94, 101, 110, 111, 112, 115, 119, 120, 122, 123, 127, 128, 131, 132, 133, 134, 135, 136, 143, 144, 146, 147, 149, 150, 152, 153, 157, 158, 161, 163, 164, 165, 166, 167, 184, 185, 186, 187, 192, 200, 204, 205, 207, 208, 209, 238, 240, 241, 242, 245, 247, 250, 251, 256, 257, 258, 263, 266, 270, 271, 272, 279, 280, 281, 284, 286, 287, 290, 291, 295, 296, 297, 300, 301, 303, 304, 305, 306, 307, 308, 316, 319, 323, 324, 330, 333, 337, 338, 344, 347, 351, 352, 356, 357, 358, 367, 368, 369, 371, 374, 375, 376, 377, 383, 384, 385, 387, 390, 391, 397, 398, 399, 403, 404, 405, 409, 410, 411, 417, 418, 420, 424, 425, 426, 432, 433, 434, 436, 440, 441, 442, 448, 451, 455, 456, 457, 462, 463, 464, 466, 468, 469, 471, 472, 479, 480, 483, 485, 488, 489, 492, 494, 495, 496, 508, 509, 512, 514, 516, 517, 518, 523, 524, 526, 527, 538, 539, 540, 542, 544, 545, 546, 551, 552, 554, 555, 569, 572, 573, 574, 575, 577, 579, 580, 587, 590, 591, 592, 593, 595, 597, 598, 599, 600, 607, 610, 611, 612, 613, 615, 617, 618, 619, 626, 627, 630, 631, 632, 635, 636, 637, 638, 640, 641, 645, 647, 648, 649, 650, 651, 658, 659, 661, 662, 663, 666, 667, 668, 669, 670, 671, 672, 674, 675, 679, 681, 682, 683, 684, 692, 693, 694, 696, 698, 699, 707, 708, 711, 714, 715, 722, 725, 726, 727, 728, 732, 734, 735, 742, 745, 746, 748, 749, 750, 757, 758, 760, 761, 762, 765, 766, 767, 768, 770, 771, 775, 778], "summary": {"covered_lines": 295, "num_statements": 301, "percent_covered": 98.00664451827242, "percent_covered_display": "98", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 98.00664451827242, "percent_statements_covered_display": "98"}, "missing_lines": [248, 486, 528, 529, 556, 557], "excluded_lines": [], "start_line": 53}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 13, 16, 17, 19, 21, 22, 25, 26, 28, 31, 32, 34, 35, 36, 39, 40, 42, 49, 50, 53, 54, 55, 56, 105, 106, 107, 138, 139, 140, 169, 170, 174, 175, 213, 214, 228, 229, 274, 275, 276, 312, 313, 314, 326, 327, 328, 340, 341, 342, 354, 355, 361, 362, 379, 380, 393, 394, 413, 414, 428, 429, 444, 445, 460, 482, 500, 504, 505, 531, 534, 535, 564, 565, 582, 583, 602, 603, 621, 622, 653, 654, 686, 687, 701, 702, 717, 718, 737, 738, 752, 753, 782, 797, 798, 801, 802, 803, 804, 805], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_file_processor_comprehensive_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 29, 30, 31, 32, 33, 36, 39, 41, 42, 43, 45, 47, 48, 49, 50, 52, 54, 55, 56, 58, 60, 61, 62, 64, 66, 67, 68, 69, 71, 73, 74, 75, 78, 81, 83, 85, 86, 87, 88, 89, 91, 92, 93, 95, 97, 99, 100, 101, 102, 103, 105, 106, 107, 109, 111, 113, 114, 115, 116, 117, 119, 120, 121, 123, 125, 127, 128, 129, 130, 131, 133, 134, 135, 137, 139, 141, 142, 143, 144, 145, 147, 151, 154, 155, 157, 160, 161, 162, 164, 165, 166, 168, 169, 171, 173, 174, 175, 177, 178, 179, 181, 182, 184, 186, 187, 189, 192, 193, 195, 196, 198, 200, 201, 202, 205, 207, 210, 211, 213, 214, 216, 218, 219, 222, 223, 225, 226, 228, 230, 231, 233, 236, 237, 240, 243, 244, 246, 248, 249, 250, 251, 253, 254, 256, 257, 259, 261, 262, 263, 265, 266, 267, 269, 270, 272, 274, 275, 276, 278, 279, 281, 282, 284, 286, 287, 288, 289, 291, 292, 293, 295, 296, 298, 300, 301, 303, 304, 305, 307, 308, 310, 312, 313, 315, 316, 319, 322, 323, 325, 328, 329, 330, 331, 333, 334, 336, 337, 339, 340, 342, 344, 345, 346, 348, 349, 351, 353, 354, 356, 357, 359, 360, 362, 364, 365, 366, 368, 369, 371, 372, 374, 376, 377, 378, 379, 381, 382, 385, 388, 389, 391, 393, 395, 396, 397, 400, 401, 402, 403, 404, 406, 409, 410, 412, 413, 414, 415, 417, 419, 421, 422, 424, 425, 427, 429, 431, 432, 433, 434, 435, 437, 438, 440, 441, 443, 445, 446, 447, 448, 449, 451, 452, 453, 454, 455, 457, 458, 460, 461, 463, 466, 467, 468, 470, 471, 473, 476, 477, 479, 480, 482, 484, 485, 487, 488, 490, 492, 493, 494, 495, 497, 498, 499, 500, 501, 505, 506, 507, 509, 511, 517, 518, 521, 527, 530, 531, 533, 536, 537, 539, 540, 542, 543, 545, 547, 548, 550, 551, 553, 554, 556, 558, 559, 561, 562, 564, 566, 567, 569, 570, 572, 574, 575, 577, 578, 580, 582, 583, 585, 586, 588, 590, 591, 593, 594, 596, 598, 599, 601, 602, 604, 606, 608, 609, 611, 614, 617, 620, 622, 625, 626, 627, 628, 630, 631, 632, 634, 636, 638, 639, 641, 643, 646, 647, 648, 650, 652, 653, 655, 658, 659, 662, 663, 664, 665, 668, 671, 672, 674, 677, 678, 680, 682, 684, 686, 688, 690, 691, 692, 693, 695, 696, 698, 699, 701, 702, 704, 706, 708, 709, 710, 711, 712, 714, 715], "summary": {"covered_lines": 436, "num_statements": 440, "percent_covered": 99.0909090909091, "percent_covered_display": "99", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 99.0909090909091, "percent_statements_covered_display": "99"}, "missing_lines": [512, 513, 514, 515], "excluded_lines": [], "functions": {"TestFileProcessorInit.test_processor_creation": {"executed_lines": [29, 30, 31, 32, 33], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestSanitizeFilename.test_sanitize_normal_filename": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestSanitizeFilename.test_sanitize_filename_with_special_chars": {"executed_lines": [47, 48, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestSanitizeFilename.test_sanitize_filename_with_path": {"executed_lines": [54, 55, 56], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestSanitizeFilename.test_sanitize_empty_filename": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestSanitizeFilename.test_sanitize_hidden_file": {"executed_lines": [66, 67, 68, 69], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestSanitizeFilename.test_sanitize_only_dots": {"executed_lines": [73, 74, 75], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestValidateUpload.test_validate_upload_valid_jar": {"executed_lines": [83, 85, 86, 87, 88, 89, 91, 92, 93], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestValidateUpload.test_validate_upload_valid_zip": {"executed_lines": [97, 99, 100, 101, 102, 103, 105, 106, 107], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 95}, "TestValidateUpload.test_validate_upload_invalid_magic_bytes": {"executed_lines": [111, 113, 114, 115, 116, 117, 119, 120, 121], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "TestValidateUpload.test_validate_upload_file_too_large": {"executed_lines": [125, 127, 128, 129, 130, 131, 133, 134, 135], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TestValidateUpload.test_validate_upload_unsupported_type": {"executed_lines": [139, 141, 142, 143, 144, 145, 147], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "TestValidateDownloadedFile.test_validate_downloaded_file_valid_jar": {"executed_lines": [157, 160, 161, 162, 164, 165, 166], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestValidateDownloadedFile.test_validate_downloaded_file_valid_zip": {"executed_lines": [171, 173, 174, 175, 177, 178, 179], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "TestValidateDownloadedFile.test_validate_downloaded_file_empty": {"executed_lines": [184, 186, 187, 189, 192, 193], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "TestValidateDownloadedFile.test_validate_downloaded_file_too_large": {"executed_lines": [198, 200, 201, 202, 205, 207, 210, 211], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "TestValidateDownloadedFile.test_validate_downloaded_file_not_found": {"executed_lines": [216, 218, 219, 222, 223], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "TestValidateDownloadedFile.test_validate_downloaded_file_invalid_magic": {"executed_lines": [228, 230, 231, 233, 236, 237], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "TestMalwareScan.test_scan_for_malware_clean_archive": {"executed_lines": [246, 248, 249, 250, 251, 253, 254], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestMalwareScan.test_scan_for_malware_path_traversal": {"executed_lines": [259, 261, 262, 263, 265, 266, 267], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestMalwareScan.test_scan_for_malware_absolute_path": {"executed_lines": [272, 274, 275, 276, 278, 279], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "TestMalwareScan.test_scan_for_malware_too_many_files": {"executed_lines": [284, 286, 287, 288, 289, 291, 292, 293], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestMalwareScan.test_scan_for_malware_bad_zip": {"executed_lines": [298, 300, 301, 303, 304, 305], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "TestMalwareScan.test_scan_for_malware_unsupported_type": {"executed_lines": [310, 312, 313, 315, 316], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 308}, "TestExtractModFiles.test_extract_mod_files_success": {"executed_lines": [325, 328, 329, 330, 331, 333, 334, 336, 337], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestExtractModFiles.test_extract_mod_files_unsupported_type": {"executed_lines": [342, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestExtractModFiles.test_extract_mod_files_bad_zip": {"executed_lines": [351, 353, 354, 356, 357], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "TestExtractModFiles.test_extract_mod_files_with_manifest": {"executed_lines": [362, 364, 365, 366, 368, 369], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "TestExtractModFiles.test_extract_mod_files_path_traversal_skipped": {"executed_lines": [374, 376, 377, 378, 379, 381, 382], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372}, "TestDownloadFromUrl.test_download_from_url_success": {"executed_lines": [391, 393, 395, 400, 401, 402, 403, 404, 406, 409, 412, 413, 414, 415, 417, 419, 421, 422], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestDownloadFromUrl.test_download_from_url_success.mock_async_gen": {"executed_lines": [396, 397], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 395}, "TestDownloadFromUrl.test_download_from_url_success.mock_client_get": {"executed_lines": [410], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 409}, "TestDownloadFromUrl.test_download_from_url_timeout": {"executed_lines": [427, 429, 431, 432, 433, 434, 435, 437, 438], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425}, "TestDownloadFromUrl.test_download_from_url_http_error": {"executed_lines": [443, 445, 446, 447, 448, 449, 451, 452, 453, 454, 455, 457, 458], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 441}, "TestDownloadFromUrl.test_download_from_url_unsafe_url": {"executed_lines": [463, 466, 467, 468], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 461}, "TestDownloadFromUrl.test_download_from_url_private_ip": {"executed_lines": [473, 476, 477], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471}, "TestDownloadFromUrl.test_download_from_url_localhost": {"executed_lines": [482, 484, 485], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480}, "TestDownloadFromUrl.test_download_from_url_redirect": {"executed_lines": [490, 492, 493, 494, 495, 497, 498, 499, 500, 501, 505, 506, 507, 509, 511, 517, 518, 521], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488}, "TestDownloadFromUrl.test_download_from_url_redirect.get_side_effect": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [512, 513, 514, 515], "excluded_lines": [], "start_line": 511}, "TestIsSafeUrl.test_is_safe_url_https": {"executed_lines": [533, 536, 537, 539, 540], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 531}, "TestIsSafeUrl.test_is_safe_url_http": {"executed_lines": [545, 547, 548, 550, 551], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 543}, "TestIsSafeUrl.test_is_safe_url_ftp": {"executed_lines": [556, 558, 559], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 554}, "TestIsSafeUrl.test_is_safe_url_file": {"executed_lines": [564, 566, 567], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 562}, "TestIsSafeUrl.test_is_safe_url_localhost": {"executed_lines": [572, 574, 575], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 570}, "TestIsSafeUrl.test_is_safe_url_private_ip": {"executed_lines": [580, 582, 583], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578}, "TestIsSafeUrl.test_is_safe_url_loopback": {"executed_lines": [588, 590, 591], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 586}, "TestIsSafeUrl.test_is_safe_url_no_hostname": {"executed_lines": [596, 598, 599], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 594}, "TestIsSafeUrl.test_is_safe_url_unresolvable": {"executed_lines": [604, 606, 608, 609, 611, 614], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602}, "TestCleanupTempFiles.test_cleanup_temp_files_success": {"executed_lines": [622, 625, 626, 627, 628, 630, 631, 632], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 620}, "TestCleanupTempFiles.test_cleanup_temp_files_not_exists": {"executed_lines": [636, 638, 639], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 634}, "TestCleanupTempFiles.test_cleanup_temp_files_permission_error": {"executed_lines": [643, 646, 647, 648, 650, 652, 653, 655, 658, 659, 662, 663, 664, 665], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641}, "TestEdgeCases.test_scan_malware_resolved_path_escape": {"executed_lines": [674, 677, 678, 680, 682, 684], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 672}, "TestEdgeCases.test_validate_upload_read_error": {"executed_lines": [688, 690, 691, 692, 693, 695, 696, 698, 699], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 686}, "TestEdgeCases.test_download_request_error": {"executed_lines": [704, 706, 708, 709, 710, 711, 712, 714, 715], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 702}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 36, 39, 45, 52, 58, 64, 71, 78, 81, 95, 109, 123, 137, 151, 154, 155, 168, 169, 181, 182, 195, 196, 213, 214, 225, 226, 240, 243, 244, 256, 257, 269, 270, 281, 282, 295, 296, 307, 308, 319, 322, 323, 339, 340, 348, 349, 359, 360, 371, 372, 385, 388, 389, 424, 425, 440, 441, 460, 461, 470, 471, 479, 480, 487, 488, 527, 530, 531, 542, 543, 553, 554, 561, 562, 569, 570, 577, 578, 585, 586, 593, 594, 601, 602, 617, 620, 634, 641, 668, 671, 672, 686, 701, 702], "summary": {"covered_lines": 105, "num_statements": 105, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFileProcessorInit": {"executed_lines": [29, 30, 31, 32, 33], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestSanitizeFilename": {"executed_lines": [41, 42, 43, 47, 48, 49, 50, 54, 55, 56, 60, 61, 62, 66, 67, 68, 69, 73, 74, 75], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestValidateUpload": {"executed_lines": [83, 85, 86, 87, 88, 89, 91, 92, 93, 97, 99, 100, 101, 102, 103, 105, 106, 107, 111, 113, 114, 115, 116, 117, 119, 120, 121, 125, 127, 128, 129, 130, 131, 133, 134, 135, 139, 141, 142, 143, 144, 145, 147], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestValidateDownloadedFile": {"executed_lines": [157, 160, 161, 162, 164, 165, 166, 171, 173, 174, 175, 177, 178, 179, 184, 186, 187, 189, 192, 193, 198, 200, 201, 202, 205, 207, 210, 211, 216, 218, 219, 222, 223, 228, 230, 231, 233, 236, 237], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "TestMalwareScan": {"executed_lines": [246, 248, 249, 250, 251, 253, 254, 259, 261, 262, 263, 265, 266, 267, 272, 274, 275, 276, 278, 279, 284, 286, 287, 288, 289, 291, 292, 293, 298, 300, 301, 303, 304, 305, 310, 312, 313, 315, 316], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "TestExtractModFiles": {"executed_lines": [325, 328, 329, 330, 331, 333, 334, 336, 337, 342, 344, 345, 346, 351, 353, 354, 356, 357, 362, 364, 365, 366, 368, 369, 374, 376, 377, 378, 379, 381, 382], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestDownloadFromUrl": {"executed_lines": [391, 393, 395, 396, 397, 400, 401, 402, 403, 404, 406, 409, 410, 412, 413, 414, 415, 417, 419, 421, 422, 427, 429, 431, 432, 433, 434, 435, 437, 438, 443, 445, 446, 447, 448, 449, 451, 452, 453, 454, 455, 457, 458, 463, 466, 467, 468, 473, 476, 477, 482, 484, 485, 490, 492, 493, 494, 495, 497, 498, 499, 500, 501, 505, 506, 507, 509, 511, 517, 518, 521], "summary": {"covered_lines": 71, "num_statements": 75, "percent_covered": 94.66666666666667, "percent_covered_display": "95", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 94.66666666666667, "percent_statements_covered_display": "95"}, "missing_lines": [512, 513, 514, 515], "excluded_lines": [], "start_line": 385}, "TestIsSafeUrl": {"executed_lines": [533, 536, 537, 539, 540, 545, 547, 548, 550, 551, 556, 558, 559, 564, 566, 567, 572, 574, 575, 580, 582, 583, 588, 590, 591, 596, 598, 599, 604, 606, 608, 609, 611, 614], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 527}, "TestCleanupTempFiles": {"executed_lines": [622, 625, 626, 627, 628, 630, 631, 632, 636, 638, 639, 643, 646, 647, 648, 650, 652, 653, 655, 658, 659, 662, 663, 664, 665], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617}, "TestEdgeCases": {"executed_lines": [674, 677, 678, 680, 682, 684, 688, 690, 691, 692, 693, 695, 696, 698, 699, 704, 706, 708, 709, 710, 711, 712, 714, 715], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 668}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 36, 39, 45, 52, 58, 64, 71, 78, 81, 95, 109, 123, 137, 151, 154, 155, 168, 169, 181, 182, 195, 196, 213, 214, 225, 226, 240, 243, 244, 256, 257, 269, 270, 281, 282, 295, 296, 307, 308, 319, 322, 323, 339, 340, 348, 349, 359, 360, 371, 372, 385, 388, 389, 424, 425, 440, 441, 460, 461, 470, 471, 479, 480, 487, 488, 527, 530, 531, 542, 543, 553, 554, 561, 562, 569, 570, 577, 578, 585, 586, 593, 594, 601, 602, 617, 620, 634, 641, 668, 671, 672, 686, 701, 702], "summary": {"covered_lines": 105, "num_statements": 105, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_file_processor_extra_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 43, 45, 46, 47, 48, 49, 51, 52, 54, 56, 58, 59, 60, 61, 62, 63, 65, 66, 67, 70, 73, 74, 76, 78, 80, 81, 82, 84, 85, 87, 89, 90, 91, 93, 94, 97, 98, 100, 102, 103, 105, 107, 108, 109, 111, 112, 116, 118, 121, 124, 125, 127, 129, 130, 131, 132, 134, 135, 136, 137, 139, 141, 142, 144, 146, 147, 148, 150, 151, 152, 154, 156, 157, 159, 161, 162, 163, 164, 166, 167, 168, 169, 171, 174, 177, 178, 180, 182, 183, 184, 186, 187, 189, 191, 192, 193, 195, 196, 197, 198, 200, 202, 203, 205, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 219, 222, 225, 226, 228, 230, 232, 233, 237, 238, 239, 241, 242, 244, 246, 248, 249, 253, 254, 256, 257, 259, 261, 262, 263, 264, 265, 269, 272, 273, 275, 276, 278, 280, 281, 282, 283, 284, 288, 289, 291, 292, 294, 296, 297, 301, 302, 305, 308, 310, 312, 313, 315, 317, 319, 320, 321, 322, 324, 326, 328, 329, 330, 331, 334, 337, 338, 340, 342, 343, 345, 346, 348, 350, 351, 353, 354, 356, 358, 359, 361, 362, 364, 366, 367, 369, 370, 372, 374, 375, 377, 378, 380, 382, 384, 385, 386, 388, 389, 391, 393, 396, 397, 399, 400, 402, 404, 405], "summary": {"covered_lines": 243, "num_statements": 243, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestFileProcessorExtraValidation.test_validate_upload_size_exceeds_limit": {"executed_lines": [29, 31, 32, 33, 34, 35, 37, 38, 39], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestFileProcessorExtraValidation.test_validate_upload_invalid_magic_bytes": {"executed_lines": [43, 45, 46, 47, 48, 49, 51, 52], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestFileProcessorExtraValidation.test_validate_upload_read_error": {"executed_lines": [56, 58, 59, 60, 61, 62, 63, 65, 66, 67], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestFileProcessorExtraDownloadValidation.test_validate_downloaded_file_not_found": {"executed_lines": [76, 78, 80, 81, 82], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestFileProcessorExtraDownloadValidation.test_validate_downloaded_file_invalid_magic": {"executed_lines": [87, 89, 90, 91, 93, 94, 97, 98, 100], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestFileProcessorExtraDownloadValidation.test_validate_downloaded_file_unexpected_extension": {"executed_lines": [105, 107, 108, 109, 111, 112, 116, 118], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestFileProcessorExtraMalwareScan.test_scan_for_malware_path_traversal": {"executed_lines": [127, 129, 130, 131, 132, 134, 135, 136, 137, 139], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestFileProcessorExtraMalwareScan.test_scan_for_malware_bad_zip": {"executed_lines": [144, 146, 147, 148, 150, 151, 152, 154], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestFileProcessorExtraMalwareScan.test_scan_for_malware_absolute_path_traversal": {"executed_lines": [159, 161, 162, 163, 164, 166, 167, 168, 169, 171], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestFileProcessorExtraExtract.test_extract_mod_files_unsupported_type": {"executed_lines": [180, 182, 183, 184], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestFileProcessorExtraExtract.test_extract_mod_files_bad_zip": {"executed_lines": [189, 191, 192, 193, 195, 196, 197, 198, 200], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestFileProcessorExtraExtract.test_extract_mod_files_with_manifests": {"executed_lines": [205, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 219], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestFileProcessorExtraDownload.test_download_from_url_timeout": {"executed_lines": [228, 230, 232, 233, 237, 238, 239], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "TestFileProcessorExtraDownload.test_download_from_url_request_error": {"executed_lines": [244, 246, 248, 249, 253, 254], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242}, "TestFileProcessorExtraDownload.test_download_from_url_too_many_redirects": {"executed_lines": [259, 261, 262, 263, 264, 265, 269, 272, 273], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestFileProcessorExtraDownload.test_download_from_url_unsafe_redirect": {"executed_lines": [278, 280, 281, 282, 283, 284, 288, 289], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "TestFileProcessorExtraDownload.test_download_from_url_generic_exception": {"executed_lines": [294, 296, 297, 301, 302], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestFileProcessorExtraCleanup.test_cleanup_temp_files_not_exists": {"executed_lines": [310, 312, 313], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 308}, "TestFileProcessorExtraCleanup.test_cleanup_temp_files_permission_error": {"executed_lines": [317, 319, 320, 321, 322], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "TestFileProcessorExtraCleanup.test_cleanup_temp_files_generic_error": {"executed_lines": [326, 328, 329, 330, 331], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "TestFileProcessorSafeUrl.test_is_safe_url_invalid_scheme": {"executed_lines": [340, 342, 343], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 338}, "TestFileProcessorSafeUrl.test_is_safe_url_no_hostname": {"executed_lines": [348, 350, 351], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 346}, "TestFileProcessorSafeUrl.test_is_safe_url_loopback": {"executed_lines": [356, 358, 359], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestFileProcessorSafeUrl.test_is_safe_url_private_ip": {"executed_lines": [364, 366, 367], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestFileProcessorSafeUrl.test_is_safe_url_localhost": {"executed_lines": [372, 374, 375], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "TestFileProcessorSafeUrl.test_is_safe_url_unresolvable": {"executed_lines": [380, 382, 384, 385, 386], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "TestFileProcessorSafeUrl.test_is_safe_url_invalid_ip_parse": {"executed_lines": [391, 393, 396, 397], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestFileProcessorSafeUrl.test_is_safe_url_link_local": {"executed_lines": [402, 404, 405], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 41, 54, 70, 73, 74, 84, 85, 102, 103, 121, 124, 125, 141, 142, 156, 157, 174, 177, 178, 186, 187, 202, 203, 222, 225, 226, 241, 242, 256, 257, 275, 276, 291, 292, 305, 308, 315, 324, 334, 337, 338, 345, 346, 353, 354, 361, 362, 369, 370, 377, 378, 388, 389, 399, 400], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFileProcessorExtraValidation": {"executed_lines": [29, 31, 32, 33, 34, 35, 37, 38, 39, 43, 45, 46, 47, 48, 49, 51, 52, 56, 58, 59, 60, 61, 62, 63, 65, 66, 67], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestFileProcessorExtraDownloadValidation": {"executed_lines": [76, 78, 80, 81, 82, 87, 89, 90, 91, 93, 94, 97, 98, 100, 105, 107, 108, 109, 111, 112, 116, 118], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestFileProcessorExtraMalwareScan": {"executed_lines": [127, 129, 130, 131, 132, 134, 135, 136, 137, 139, 144, 146, 147, 148, 150, 151, 152, 154, 159, 161, 162, 163, 164, 166, 167, 168, 169, 171], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestFileProcessorExtraExtract": {"executed_lines": [180, 182, 183, 184, 189, 191, 192, 193, 195, 196, 197, 198, 200, 205, 207, 208, 209, 210, 211, 213, 214, 215, 216, 217, 219], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestFileProcessorExtraDownload": {"executed_lines": [228, 230, 232, 233, 237, 238, 239, 244, 246, 248, 249, 253, 254, 259, 261, 262, 263, 264, 265, 269, 272, 273, 278, 280, 281, 282, 283, 284, 288, 289, 294, 296, 297, 301, 302], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "TestFileProcessorExtraCleanup": {"executed_lines": [310, 312, 313, 317, 319, 320, 321, 322, 326, 328, 329, 330, 331], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestFileProcessorSafeUrl": {"executed_lines": [340, 342, 343, 348, 350, 351, 356, 358, 359, 364, 366, 367, 372, 374, 375, 380, 382, 384, 385, 386, 391, 393, 396, 397, 402, 404, 405], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 24, 27, 41, 54, 70, 73, 74, 84, 85, 102, 103, 121, 124, 125, 141, 142, 156, 157, 174, 177, 178, 186, 187, 202, 203, 222, 225, 226, 241, 242, 256, 257, 275, 276, 291, 292, 305, 308, 315, 324, 334, 337, 338, 345, 346, 353, 354, 361, 362, 369, 370, 377, 378, 388, 389, 399, 400], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_file_security.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 25, 28, 30, 32, 33, 34, 35, 36, 37, 39, 41, 47, 48, 49, 52, 55, 56, 58, 60, 61, 63, 68, 70, 71, 73, 74, 76, 80, 81, 82, 83, 85, 86, 88, 90, 91, 100, 102, 103, 104, 106, 108, 109, 117, 119, 120, 122, 124, 125, 130, 132, 133, 137, 139, 140, 142, 144, 145, 149, 151, 155, 157, 159, 162, 164, 166, 168, 169, 171, 173, 174, 178, 180, 183, 185, 187, 189, 190, 194, 197, 198, 201, 202, 203, 205, 208, 212, 214, 215, 223, 226, 231, 233, 234, 236, 238, 239, 243, 245, 247, 248, 252, 254, 255, 257, 259, 260, 265, 267, 268, 270, 272, 274, 276, 277, 279, 280, 282, 284, 285, 287, 288, 290, 293, 294, 295, 297, 298, 300, 302, 304, 305, 307, 309, 312, 315, 317, 319, 320, 321, 323, 325, 328, 331, 334, 337, 338, 340, 342, 343, 347, 348, 351, 354, 355, 357, 358, 360, 362, 363, 364, 366, 368], "summary": {"covered_lines": 169, "num_statements": 169, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSecurityConfig.test_default_config": {"executed_lines": [30, 32, 33, 34, 35, 36, 37], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestSecurityConfig.test_custom_config": {"executed_lines": [41, 47, 48, 49], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestFileSecurityScanner.scanner": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestFileSecurityScanner.strict_scanner": {"executed_lines": [63, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestFileSecurityScanner.temp_dir": {"executed_lines": [73, 74], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestFileSecurityScanner.create_zip": {"executed_lines": [80, 81, 82, 83, 85, 86], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestFileSecurityScanner.test_scan_valid_zip": {"executed_lines": [90, 91, 100, 102, 103, 104], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestFileSecurityScanner.test_scan_valid_jar": {"executed_lines": [108, 109, 117, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestFileSecurityScanner.test_detect_path_traversal_dotdot": {"executed_lines": [124, 125, 130, 132, 133], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestFileSecurityScanner.test_detect_path_traversal_absolute": {"executed_lines": [139, 140, 142, 144, 145], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "TestFileSecurityScanner.test_detect_zip_bomb_high_ratio": {"executed_lines": [151, 155, 157, 159, 162], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "TestFileSecurityScanner.test_detect_excessive_files": {"executed_lines": [166, 168, 169, 171, 173, 174], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestFileSecurityScanner.test_detect_large_file": {"executed_lines": [180, 183, 185, 187, 189, 190], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestFileSecurityScanner.test_detect_nested_archive": {"executed_lines": [197, 198, 201, 202, 203, 205, 208], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194}, "TestFileSecurityScanner.test_detect_suspicious_content": {"executed_lines": [214, 215, 223, 226], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestFileSecurityScanner.test_scan_invalid_zip": {"executed_lines": [233, 234, 236, 238, 239], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231}, "TestFileSecurityScanner.test_scan_nonexistent_file": {"executed_lines": [245, 247, 248], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243}, "TestFileSecurityScanner.test_scan_disallowed_extension": {"executed_lines": [254, 255, 257, 259, 260], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "TestFileSecurityScanner.test_validate_extraction_path_safe": {"executed_lines": [267, 268, 270, 272], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 265}, "TestFileSecurityScanner.test_validate_extraction_path_traversal": {"executed_lines": [276, 277, 279, 280], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestFileSecurityScanner.test_validate_extraction_path_absolute": {"executed_lines": [284, 285, 287, 288], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestFileSecurityScanner.test_scan_upload_valid": {"executed_lines": [293, 294, 295, 297, 298, 300], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290}, "TestFileSecurityScanner.test_scan_upload_invalid": {"executed_lines": [304, 305, 307, 309], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 302}, "TestSecurityScanResult.test_empty_result_is_safe": {"executed_lines": [317, 319, 320, 321], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 315}, "TestSecurityScanResult.test_add_threat_updates_safety": {"executed_lines": [325, 328, 331, 334, 337, 338], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestSecurityScanResult.test_has_critical_threats": {"executed_lines": [342, 343, 347, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestConvenienceFunctions.temp_dir": {"executed_lines": [357, 358], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestConvenienceFunctions.test_scan_archive_function": {"executed_lines": [362, 363, 364, 366, 368], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 25, 28, 39, 52, 55, 56, 60, 61, 70, 71, 76, 88, 106, 122, 137, 149, 164, 178, 194, 212, 231, 243, 252, 265, 274, 282, 290, 302, 312, 315, 323, 340, 351, 354, 355, 360], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecurityConfig": {"executed_lines": [30, 32, 33, 34, 35, 36, 37, 41, 47, 48, 49], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestFileSecurityScanner": {"executed_lines": [58, 63, 68, 73, 74, 80, 81, 82, 83, 85, 86, 90, 91, 100, 102, 103, 104, 108, 109, 117, 119, 120, 124, 125, 130, 132, 133, 139, 140, 142, 144, 145, 151, 155, 157, 159, 162, 166, 168, 169, 171, 173, 174, 180, 183, 185, 187, 189, 190, 197, 198, 201, 202, 203, 205, 208, 214, 215, 223, 226, 233, 234, 236, 238, 239, 245, 247, 248, 254, 255, 257, 259, 260, 267, 268, 270, 272, 276, 277, 279, 280, 284, 285, 287, 288, 293, 294, 295, 297, 298, 300, 304, 305, 307, 309], "summary": {"covered_lines": 95, "num_statements": 95, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestSecurityScanResult": {"executed_lines": [317, 319, 320, 321, 325, 328, 331, 334, 337, 338, 342, 343, 347, 348], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "TestConvenienceFunctions": {"executed_lines": [357, 358, 362, 363, 364, 366, 368], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 25, 28, 39, 52, 55, 56, 60, 61, 70, 71, 76, 88, 106, 122, 137, 149, 164, 178, 194, 212, 231, 243, 252, 265, 274, 282, 290, 302, 312, 315, 323, 340, 351, 354, 355, 360], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_ingestion_base.py": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 46, "percent_covered": 4.3478260869565215, "percent_covered_display": "4", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 4.3478260869565215, "percent_statements_covered_display": "4"}, "missing_lines": [13, 16, 18, 19, 20, 21, 24, 27, 29, 36, 37, 38, 39, 41, 43, 51, 52, 54, 56, 63, 65, 67, 74, 75, 78, 81, 83, 84, 86, 88, 89, 91, 92, 94, 96, 97, 98, 100, 101, 103, 106, 107, 108, 110], "excluded_lines": [], "functions": {"TestDocumentType.test_all_document_types": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 16}, "TestRawDocument.test_creation_with_required_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 36, 37, 38, 39], "excluded_lines": [], "start_line": 27}, "TestRawDocument.test_creation_with_all_fields": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [43, 51, 52], "excluded_lines": [], "start_line": 41}, "TestRawDocument.test_default_metadata_none": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [56, 63], "excluded_lines": [], "start_line": 54}, "TestRawDocument.test_post_init_sets_metadata_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [67, 74, 75], "excluded_lines": [], "start_line": 65}, "TestBaseSourceAdapter.test_is_abstract": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83, 84], "excluded_lines": [], "start_line": 81}, "TestBaseSourceAdapter.test_subclass_must_implement_methods": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [88, 89, 91, 92], "excluded_lines": [], "start_line": 86}, "TestBaseSourceAdapter.test_subclass_can_implement_methods": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [96, 97, 100, 103, 106, 107, 108, 110], "excluded_lines": [], "start_line": 94}, "TestBaseSourceAdapter.test_subclass_can_implement_methods.CompleteAdapter.fetch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98], "excluded_lines": [], "start_line": 97}, "TestBaseSourceAdapter.test_subclass_can_implement_methods.CompleteAdapter.validate_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [101], "excluded_lines": [], "start_line": 100}, "": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 13, "percent_covered": 15.384615384615385, "percent_covered_display": "15", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 15.384615384615385, "percent_statements_covered_display": "15"}, "missing_lines": [13, 16, 24, 27, 41, 54, 65, 78, 81, 86, 94], "excluded_lines": [], "start_line": 1}}, "classes": {"TestDocumentType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [18, 19, 20, 21], "excluded_lines": [], "start_line": 13}, "TestRawDocument": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 36, 37, 38, 39, 43, 51, 52, 56, 63, 67, 74, 75], "excluded_lines": [], "start_line": 24}, "TestBaseSourceAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83, 84, 88, 89, 91, 92, 96, 97, 100, 103, 106, 107, 108, 110], "excluded_lines": [], "start_line": 78}, "TestBaseSourceAdapter.test_subclass_must_implement_methods.IncompleteAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestBaseSourceAdapter.test_subclass_can_implement_methods.CompleteAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98, 101], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 13, "percent_covered": 15.384615384615385, "percent_covered_display": "15", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 15.384615384615385, "percent_statements_covered_display": "15"}, "missing_lines": [13, 16, 24, 27, 41, 54, 65, 78, 81, 86, 94], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_init_db_coverage.py": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 17, 20, 21, 22, 23, 24, 27, 32, 33, 35, 40, 41, 44, 45, 51, 52, 55, 58, 61, 62, 63, 64, 67, 70, 71, 73, 74, 78, 82, 83, 85, 86, 90, 93, 94, 96, 97, 101, 105, 108, 110, 111, 114, 115, 118, 121, 125, 128, 131, 134], "summary": {"covered_lines": 57, "num_statements": 61, "percent_covered": 93.44262295081967, "percent_covered_display": "93", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 93.44262295081967, "percent_statements_covered_display": "93"}, "missing_lines": [46, 47, 48, 49], "excluded_lines": [], "functions": {"TestDatabaseInit.test_init_db_success": {"executed_lines": [17, 20, 21, 22, 23, 24, 27], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestDatabaseInit.test_init_db_retry_on_error": {"executed_lines": [35, 40, 41, 44, 45, 51, 52], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestDatabaseInit.test_init_db_retry_on_error.mock_begin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48, 49], "excluded_lines": [], "start_line": 45}, "TestDatabaseInitRetryLogic.test_retry_delay_calculation": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestDatabaseInitErrorHandling.test_init_db_programming_error": {"executed_lines": [73, 74, 78], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestDatabaseInitErrorHandling.test_init_db_operational_error": {"executed_lines": [85, 86, 90], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestDatabaseInitErrorHandling.test_init_db_unexpected_error": {"executed_lines": [96, 97, 101], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestDatabaseInitLogging.test_logging_configured": {"executed_lines": [110, 111, 114, 115], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "TestDatabaseInitExtensions.test_extensions_created": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestDatabaseInitTables.test_tables_created": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 32, 33, 55, 58, 67, 70, 71, 82, 83, 93, 94, 105, 108, 118, 121, 128, 131], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestDatabaseInit": {"executed_lines": [17, 20, 21, 22, 23, 24, 27, 35, 40, 41, 44, 45, 51, 52], "summary": {"covered_lines": 14, "num_statements": 18, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [46, 47, 48, 49], "excluded_lines": [], "start_line": 11}, "TestDatabaseInitRetryLogic": {"executed_lines": [61, 62, 63, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestDatabaseInitErrorHandling": {"executed_lines": [73, 74, 78, 85, 86, 90, 96, 97, 101], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestDatabaseInitLogging": {"executed_lines": [110, 111, 114, 115], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestDatabaseInitExtensions": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestDatabaseInitTables": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 32, 33, 55, 58, 67, 70, 71, 82, 83, 93, 94, 105, 108, 118, 121, 128, 131], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_java_parser_coverage.py": {"executed_lines": [5, 6, 7, 10, 20, 23, 24, 26, 28, 30, 31, 33, 35, 37, 39, 41, 52, 53, 54, 56, 58, 68, 69, 71, 73, 74, 75, 77, 79, 80, 81, 83, 85, 87, 89, 92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 105, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 124, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 167, 169, 176, 178, 180, 182, 184, 186, 189, 190, 193, 194, 196, 197, 200, 203, 205, 206, 207, 208, 209, 211, 213, 214, 216, 218, 219, 220, 221, 223, 225, 236, 237, 238, 239, 241, 243, 244, 245, 246, 248, 250, 252, 253, 254, 255, 257, 259, 260, 261, 262, 263, 264, 266, 268, 269, 270, 271, 274, 277, 278, 280, 282, 284, 285, 287, 289, 291, 293, 295, 302, 303, 304, 305, 307, 309, 320, 321, 323, 325, 332, 333, 335, 337, 338, 340, 342, 354, 355, 357, 359, 370, 372, 373, 374, 376, 378, 385, 386, 388, 390, 392, 398, 399, 400, 402, 405, 406, 407, 410, 426, 427, 429, 431, 432, 434, 436, 438, 446, 447, 449, 451, 460, 461, 463, 465, 467, 468, 469, 470, 471, 473, 475, 479, 481, 483, 485, 486, 488, 490, 492, 493, 495, 497, 498, 500, 502, 503, 505, 507, 508, 511, 514, 516, 521, 522, 524, 526, 527, 529, 531, 532, 533, 535, 537, 542, 543, 544, 546, 548, 549, 552, 555, 557, 558, 563, 564, 566, 568, 569, 574, 575, 576, 578, 580, 581, 588, 589, 591, 593, 594, 599, 600, 602, 604, 605, 610, 611, 613, 615, 626, 627, 628, 629], "summary": {"covered_lines": 301, "num_statements": 301, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestTreeSitterJavaParser.parser": {"executed_lines": [26], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestTreeSitterJavaParser.test_init_with_tree_sitter": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestTreeSitterJavaParser.test_parse_empty_string": {"executed_lines": [35, 37], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestTreeSitterJavaParser.test_parse_valid_java": {"executed_lines": [41, 52, 53, 54], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestTreeSitterJavaParser.test_parse_with_comments": {"executed_lines": [58, 68, 69], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestTreeSitterJavaParser.test_has_syntax_errors_valid_code": {"executed_lines": [73, 74, 75], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestTreeSitterJavaParser.test_has_syntax_errors_invalid_code": {"executed_lines": [79, 80, 81], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestTreeSitterJavaParser.test_has_syntax_errors_empty_string": {"executed_lines": [85, 87], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestTreeSitterJavaParser.test_count_error_nodes": {"executed_lines": [92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestTreeSitterJavaParser.test_count_error_nodes_with_errors": {"executed_lines": [107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestTreeSitterJavaParser.test_tree_to_dict_leaf_node": {"executed_lines": [126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestTreeSitterJavaParser.test_tree_to_dict_with_children": {"executed_lines": [142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestTreeSitterJavaParser.test_parse_with_javalang_fallback": {"executed_lines": [169, 176, 178], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestTreeSitterJavaParser.test_parse_with_javalang_invalid": {"executed_lines": [182, 184], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestTreeSitterJavaParser.test_javalang_to_dict": {"executed_lines": [189, 190, 193, 194, 196, 197], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestSemanticAnalyzer.test_init_with_valid_ast": {"executed_lines": [205, 206, 207, 208, 209], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestSemanticAnalyzer.test_init_with_invalid_ast": {"executed_lines": [213, 214], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "TestSemanticAnalyzer.test_analyze_empty_ast": {"executed_lines": [218, 219, 220, 221], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "TestSemanticAnalyzer.test_analyze_with_classes": {"executed_lines": [225, 236, 237, 238, 239], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223}, "TestSemanticAnalyzer.test_get_type_info_existing": {"executed_lines": [243, 244, 245, 246, 248], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "TestSemanticAnalyzer.test_get_type_info_non_existing": {"executed_lines": [252, 253, 254, 255], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 250}, "TestSemanticAnalyzer.test_get_symbol_info_existing": {"executed_lines": [259, 260, 261, 262, 263, 264], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestSemanticAnalyzer.test_get_symbol_info_non_existing": {"executed_lines": [268, 269, 270, 271], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 266}, "TestJavaASTAnalyzer.analyzer": {"executed_lines": [280], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278}, "TestJavaASTAnalyzer.test_init": {"executed_lines": [284, 285], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestJavaASTAnalyzer.test_analyze_file_empty": {"executed_lines": [289, 291], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestJavaASTAnalyzer.test_analyze_file_simple_class": {"executed_lines": [295, 302, 303, 304, 305], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "TestJavaASTAnalyzer.test_analyze_file_with_imports": {"executed_lines": [309, 320, 321], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307}, "TestJavaASTAnalyzer.test_analyze_file_with_annotations": {"executed_lines": [325, 332, 333], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestJavaASTAnalyzer.test_analyze_file_no_parse": {"executed_lines": [337, 338], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestJavaASTAnalyzer.test_extract_classes": {"executed_lines": [342, 354, 355], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestJavaASTAnalyzer.test_extract_classes_javalang": {"executed_lines": [359, 370, 372, 373, 374], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 357}, "TestJavaASTAnalyzer.test_extract_class_info": {"executed_lines": [378, 385, 386, 388], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376}, "TestJavaASTAnalyzer.test_extract_class_info_javalang": {"executed_lines": [392, 398, 399, 400], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 390}, "TestJavaASTAnalyzer.test_extract_imports": {"executed_lines": [405, 406, 407, 410, 426, 427], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "TestJavaASTAnalyzer.test_extract_imports_javalang": {"executed_lines": [431, 432, 434], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429}, "TestJavaASTAnalyzer.test_get_scoped_identifier_text": {"executed_lines": [438, 446, 447], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436}, "TestJavaASTAnalyzer.test_extract_annotations": {"executed_lines": [451, 460, 461, 463], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 449}, "TestJavaASTAnalyzer.test_identify_components_blocks": {"executed_lines": [467, 468, 469, 470, 471], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 465}, "TestJavaASTAnalyzer.test_identify_components_items": {"executed_lines": [475, 479, 481], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "TestJavaASTAnalyzer.test_identify_components_entities": {"executed_lines": [485, 486, 488], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 483}, "TestJavaASTAnalyzer.test_is_subclass_of_direct": {"executed_lines": [492, 493], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "TestJavaASTAnalyzer.test_is_subclass_of_qualified": {"executed_lines": [497, 498], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 495}, "TestJavaASTAnalyzer.test_is_subclass_of_no_match": {"executed_lines": [502, 503], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 500}, "TestJavaASTAnalyzer.test_is_subclass_of_empty": {"executed_lines": [507, 508], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 505}, "TestModuleFunctions.test_analyze_java_file_valid": {"executed_lines": [516, 521, 522], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 514}, "TestModuleFunctions.test_analyze_java_file_empty": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "TestModuleFunctions.test_analyze_java_file_with_filename": {"executed_lines": [531, 532, 533], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 529}, "TestModuleFunctions.test_perform_semantic_analysis_valid": {"executed_lines": [537, 542, 543, 544], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535}, "TestModuleFunctions.test_perform_semantic_analysis_empty": {"executed_lines": [548, 549], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546}, "TestEdgeCases.test_parse_unicode_characters": {"executed_lines": [557, 558, 563, 564], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 555}, "TestEdgeCases.test_parse_very_long_file": {"executed_lines": [568, 569, 574, 575, 576], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566}, "TestEdgeCases.test_analyze_nested_classes": {"executed_lines": [580, 581, 588, 589], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 578}, "TestEdgeCases.test_analyze_interface": {"executed_lines": [593, 594, 599, 600], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591}, "TestEdgeCases.test_analyze_enum": {"executed_lines": [604, 605, 610, 611], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 602}, "TestEdgeCases.test_semantic_analyzer_with_complex_ast": {"executed_lines": [615, 626, 627, 628, 629], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 613}, "": {"executed_lines": [5, 6, 7, 10, 20, 23, 24, 28, 33, 39, 56, 71, 77, 83, 89, 105, 124, 140, 167, 180, 186, 200, 203, 211, 216, 223, 241, 250, 257, 266, 274, 277, 278, 282, 287, 293, 307, 323, 335, 340, 357, 376, 390, 402, 429, 436, 449, 465, 473, 483, 490, 495, 500, 505, 511, 514, 524, 529, 535, 546, 552, 555, 566, 578, 591, 602, 613], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTreeSitterJavaParser": {"executed_lines": [26, 30, 31, 35, 37, 41, 52, 53, 54, 58, 68, 69, 73, 74, 75, 79, 80, 81, 85, 87, 92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 169, 176, 178, 182, 184, 189, 190, 193, 194, 196, 197], "summary": {"covered_lines": 90, "num_statements": 90, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestSemanticAnalyzer": {"executed_lines": [205, 206, 207, 208, 209, 213, 214, 218, 219, 220, 221, 225, 236, 237, 238, 239, 243, 244, 245, 246, 248, 252, 253, 254, 255, 259, 260, 261, 262, 263, 264, 268, 269, 270, 271], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestJavaASTAnalyzer": {"executed_lines": [280, 284, 285, 289, 291, 295, 302, 303, 304, 305, 309, 320, 321, 325, 332, 333, 337, 338, 342, 354, 355, 359, 370, 372, 373, 374, 378, 385, 386, 388, 392, 398, 399, 400, 405, 406, 407, 410, 426, 427, 431, 432, 434, 438, 446, 447, 451, 460, 461, 463, 467, 468, 469, 470, 471, 475, 479, 481, 485, 486, 488, 492, 493, 497, 498, 502, 503, 507, 508], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestModuleFunctions": {"executed_lines": [516, 521, 522, 526, 527, 531, 532, 533, 537, 542, 543, 544, 548, 549], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511}, "TestEdgeCases": {"executed_lines": [557, 558, 563, 564, 568, 569, 574, 575, 576, 580, 581, 588, 589, 593, 594, 599, 600, 604, 605, 610, 611, 615, 626, 627, 628, 629], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552}, "": {"executed_lines": [5, 6, 7, 10, 20, 23, 24, 28, 33, 39, 56, 71, 77, 83, 89, 105, 124, 140, 167, 180, 186, 200, 203, 211, 216, 223, 241, 250, 257, 266, 274, 277, 278, 282, 287, 293, 307, 323, 335, 340, 357, 376, 390, 402, 429, 436, 449, 465, 473, 483, 490, 495, 500, 505, 511, 514, 524, 529, 535, 546, 552, 555, 566, 578, 591, 602, 613], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_job_manager.py": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 42, 49, 50, 51, 52, 54, 55, 56, 57, 66, 67, 69, 70, 71, 72, 73, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 89, 90, 92, 95, 96, 97, 98, 100, 101, 102, 103, 105, 106, 108, 112, 113, 114, 115, 117, 118, 119, 120, 122, 123, 125, 128, 129, 130, 131, 133, 134, 135, 136, 138, 139, 141, 144, 145, 146, 148, 149, 150, 151, 153, 154, 156, 157, 159, 162, 163, 164, 166], "summary": {"covered_lines": 110, "num_statements": 111, "percent_covered": 99.09909909909909, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.09909909909909, "percent_statements_covered_display": "99"}, "missing_lines": [167], "excluded_lines": [], "functions": {"TestJobManager.manager": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "TestJobManager.test_target_version_enum": {"executed_lines": [15, 16, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestJobManager.test_output_format_enum": {"executed_lines": [20, 21], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestJobManager.test_job_options_defaults": {"executed_lines": [24, 25, 26], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestJobManager.test_create_job": {"executed_lines": [30, 31, 32, 33, 34, 36, 37, 39, 42, 49, 50, 51, 52], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestJobManager.test_get_job_success": {"executed_lines": [56, 57, 66, 67, 69, 70, 71, 72, 73], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestJobManager.test_get_job_not_found": {"executed_lines": [77, 78, 80, 81, 82], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestJobManager.test_update_progress": {"executed_lines": [86, 87, 89, 90, 92, 95, 96, 97, 98], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestJobManager.test_complete_job": {"executed_lines": [102, 103, 105, 106, 108, 112, 113, 114, 115], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestJobManager.test_fail_job": {"executed_lines": [119, 120, 122, 123, 125, 128, 129, 130, 131], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestJobManager.test_cancel_job": {"executed_lines": [135, 136, 138, 139, 141, 144, 145, 146], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "TestJobManager.test_list_jobs": {"executed_lines": [150, 151, 153, 154, 156, 157, 159, 162, 163, 164], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 149}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 14, 19, 23, 28, 29, 54, 55, 75, 76, 84, 85, 100, 101, 117, 118, 133, 134, 148, 149, 166], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "97"}, "missing_lines": [167], "excluded_lines": [], "start_line": 1}}, "classes": {"TestJobManager": {"executed_lines": [11, 12, 15, 16, 17, 20, 21, 24, 25, 26, 30, 31, 32, 33, 34, 36, 37, 39, 42, 49, 50, 51, 52, 56, 57, 66, 67, 69, 70, 71, 72, 73, 77, 78, 80, 81, 82, 86, 87, 89, 90, 92, 95, 96, 97, 98, 102, 103, 105, 106, 108, 112, 113, 114, 115, 119, 120, 122, 123, 125, 128, 129, 130, 131, 135, 136, 138, 139, 141, 144, 145, 146, 150, 151, 153, 154, 156, 157, 159, 162, 163, 164], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "": {"executed_lines": [2, 3, 4, 5, 6, 8, 9, 10, 14, 19, 23, 28, 29, 54, 55, 75, 76, 84, 85, 100, 101, 117, 118, 133, 134, 148, 149, 166], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "97"}, "missing_lines": [167], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_knowledge_base_coverage.py": {"executed_lines": [7, 8, 9, 12, 15, 17, 18, 20, 21, 22, 23, 24, 27, 30, 32, 34, 46, 49, 52, 54, 56, 58, 60, 62], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestKnowledgeBaseModels.test_priority_string_to_enum": {"executed_lines": [17, 18, 20, 21, 22, 23, 24], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestRouterConfiguration.test_router_path_construction": {"executed_lines": [32, 34, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestHybridSearch.test_hybrid_search_endpoint_exists": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestHybridSearch.test_semantic_search_endpoint": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestHybridSearch.test_pattern_chunk_retrieval": {"executed_lines": [62], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "": {"executed_lines": [7, 8, 9, 12, 15, 27, 30, 49, 52, 56, 60], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestKnowledgeBaseModels": {"executed_lines": [17, 18, 20, 21, 22, 23, 24], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestRouterConfiguration": {"executed_lines": [32, 34, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestHybridSearch": {"executed_lines": [54, 58, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "": {"executed_lines": [7, 8, 9, 12, 15, 27, 30, 49, 52, 56, 60], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_logging_config.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 15, 17, 19, 20, 21, 22, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 41, 47, 48, 51, 52, 54, 56, 59, 60, 70, 71, 73, 74, 75, 76, 78, 79, 80, 82, 84], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestLoggingConfig.test_setup_logging_json": {"executed_lines": [13, 15, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestLoggingConfig.test_setup_logging_console": {"executed_lines": [22, 24], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestLoggingConfig.test_get_logger": {"executed_lines": [28, 29], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestStructlogMiddleware.test_middleware_http": {"executed_lines": [35, 36, 38, 39, 41, 47, 48, 51, 54, 56, 59, 60, 70, 71], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestStructlogMiddleware.test_middleware_http.mock_app": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestStructlogMiddleware.test_middleware_non_http": {"executed_lines": [75, 76, 78, 79, 80, 82, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 19, 20, 21, 26, 27, 31, 32, 33, 34, 73, 74], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestLoggingConfig": {"executed_lines": [13, 15, 17, 22, 24, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "TestStructlogMiddleware": {"executed_lines": [35, 36, 38, 39, 41, 47, 48, 51, 52, 54, 56, 59, 60, 70, 71, 75, 76, 78, 79, 80, 82, 84], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 19, 20, 21, 26, 27, 31, 32, 33, 34, 73, 74], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_logging_middleware_service.py": {"executed_lines": [5, 6, 7, 8, 11, 12, 14, 15, 16, 18, 20, 21, 22, 23, 25, 27, 28, 29, 30, 33, 34, 36, 37, 38, 40, 42, 43, 45, 46, 49, 50, 52, 53, 54, 56, 58, 59, 60], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestLoggingMiddlewareInit.test_logging_middleware_init": {"executed_lines": [14, 15, 16], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestLoggingMiddlewareInit.test_logging_middleware_default_exclude_paths": {"executed_lines": [20, 21, 22, 23], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestLoggingMiddlewareInit.test_logging_middleware_custom_exclude_paths": {"executed_lines": [27, 28, 29, 30], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestLoggingMiddlewareDispatch.test_middleware_has_dispatch": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestLoggingMiddlewareDispatch.test_should_exclude_path": {"executed_lines": [42, 43, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestRequestContextMiddleware.test_request_context_middleware_init": {"executed_lines": [52, 53, 54], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestRequestContextMiddleware.test_request_context_middleware_has_dispatch": {"executed_lines": [58, 59, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [5, 6, 7, 8, 11, 12, 18, 25, 33, 34, 40, 49, 50, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestLoggingMiddlewareInit": {"executed_lines": [14, 15, 16, 20, 21, 22, 23, 27, 28, 29, 30], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "TestLoggingMiddlewareDispatch": {"executed_lines": [36, 37, 38, 42, 43, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestRequestContextMiddleware": {"executed_lines": [52, 53, 54, 58, 59, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "": {"executed_lines": [5, 6, 7, 8, 11, 12, 18, 25, 33, 34, 40, 49, 50, 56], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_metrics_service.py": {"executed_lines": [7, 8, 9, 32, 33, 34, 36, 37, 39, 41, 42, 43, 45, 47, 48, 49, 50, 52, 54, 55, 56, 58, 60, 61, 63, 65, 66, 68, 70, 71, 72, 73, 74, 77, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 123, 124, 126, 127, 128, 131, 132, 134], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestMetricsTracker.tracker": {"executed_lines": [36, 37], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestMetricsTracker.test_tracker_init": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestMetricsTracker.test_tracker_is_singleton": {"executed_lines": [47, 48, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestMetricsTracker.test_tracker_has_conversion_tracking": {"executed_lines": [54, 55, 56], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestMetricsTracker.test_record_conversion_success": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestMetricsTracker.test_record_conversion_failure": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestMetricsTracker.test_get_stats": {"executed_lines": [70, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestRecordFunctions.test_record_http_request_import": {"executed_lines": [80], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestRecordFunctions.test_record_conversion_job_import": {"executed_lines": [84], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestRecordFunctions.test_record_agent_execution_import": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestRecordFunctions.test_record_llm_usage_import": {"executed_lines": [92], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestRecordFunctions.test_record_error_import": {"executed_lines": [96], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestRecordFunctions.test_record_retry_attempt_import": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestRecordFunctions.test_record_successful_retry_import": {"executed_lines": [104], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestRecordFunctions.test_record_rate_limit_hit_import": {"executed_lines": [108], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestRecordFunctions.test_record_rate_limit_request_import": {"executed_lines": [112], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestRecordFunctions.test_update_rate_limit_usage_import": {"executed_lines": [116], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestRecordFunctions.test_update_active_rate_limit_clients_import": {"executed_lines": [120], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestMetricsMiddleware.test_middleware_init": {"executed_lines": [126, 127, 128], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestGetMetrics.test_get_metrics_exists": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "": {"executed_lines": [7, 8, 9, 32, 33, 34, 39, 45, 52, 58, 63, 68, 77, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 123, 124, 131, 132], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestMetricsTracker": {"executed_lines": [36, 37, 41, 42, 43, 47, 48, 49, 50, 54, 55, 56, 60, 61, 65, 66, 70, 71, 72, 73, 74], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestRecordFunctions": {"executed_lines": [80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestMetricsMiddleware": {"executed_lines": [126, 127, 128], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "TestGetMetrics": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "": {"executed_lines": [7, 8, 9, 32, 33, 34, 39, 45, 52, 58, 63, 68, 77, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 123, 124, 131, 132], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_mod_import_service_coverage.py": {"executed_lines": [5, 6, 8, 15, 18, 20, 22, 24, 26, 28, 31, 34, 35, 37, 39, 40, 42, 43, 46, 47, 48, 49, 50, 51, 53, 54, 56, 57, 60, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 75, 77, 78, 79, 81, 83, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 99, 101, 102, 103, 105, 107, 108, 109, 110, 111, 113, 115, 116, 117, 118, 119, 121, 123, 124, 125, 127, 128, 130, 131, 132, 134, 135, 136, 138, 139, 141, 142, 143, 145, 147, 148, 150, 151, 152, 154, 156, 157, 159, 160, 161, 170, 172, 173, 177, 179, 180, 181, 183, 185, 186, 190, 192, 193, 194, 196, 198, 199, 201, 203, 204, 206, 208, 209, 213, 214, 216, 218, 219, 221, 222, 225, 226, 228, 229, 231, 233, 234, 236, 238, 239, 241, 242, 244, 245, 247, 251, 252, 254, 256, 257, 259, 263, 264, 266, 268, 269, 271, 272, 273, 277, 281, 282, 284, 285, 287, 291, 292, 294, 296, 297, 299, 303, 304, 308, 310, 311, 313, 314, 316, 317, 319, 320, 322, 323, 324, 326, 327, 329, 330, 332, 334, 335, 337, 339, 340, 342, 344, 345, 347, 349, 350, 352, 354, 355, 356, 358, 361, 364, 366, 367, 368, 370, 372, 373, 374, 376, 378, 379, 380, 382, 384, 385, 386, 388, 389, 391, 393, 394, 397, 398, 400, 401, 403, 405, 406, 410, 411, 415, 416, 417, 420, 421], "summary": {"covered_lines": 243, "num_statements": 244, "percent_covered": 99.59016393442623, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.59016393442623, "percent_statements_covered_display": "99"}, "missing_lines": [215], "excluded_lines": [], "functions": {"TestModPlatform.test_curseforge_value": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestModPlatform.test_modrinth_value": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestModPlatform.test_unknown_value": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestModImportService.service": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestModImportService.mock_curseforge": {"executed_lines": [42, 43, 46, 47, 48, 49, 50, 51], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestModImportService.mock_modrinth": {"executed_lines": [56, 57, 60, 61, 62, 63, 64, 65], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestModImportService.test_init": {"executed_lines": [69, 70, 71, 72, 73], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestModImportService.test_detect_platform_curseforge": {"executed_lines": [77, 78, 79], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestModImportService.test_detect_platform_curseforge_uppercase": {"executed_lines": [83, 84, 85], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestModImportService.test_detect_platform_modrinth": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestModImportService.test_detect_platform_modrinth_www": {"executed_lines": [95, 96, 97], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestModImportService.test_detect_platform_unknown": {"executed_lines": [101, 102, 103], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestModImportService.test_parse_url_curseforge": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestModImportService.test_parse_url_modrinth": {"executed_lines": [115, 116, 117, 118, 119], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestModImportService.test_parse_url_unknown": {"executed_lines": [123, 124, 125], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestModImportService.test_search_mods_both_platforms": {"executed_lines": [130, 131, 132, 134, 135, 136], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestModImportService.test_search_mods_curseforge_only": {"executed_lines": [141, 142, 143, 145], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "TestModImportService.test_search_mods_modrinth_only": {"executed_lines": [150, 151, 152, 154], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestModImportService.test_search_mods_with_filters": {"executed_lines": [159, 160, 161, 170], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestModImportService.test_search_mods_error_handling_curseforge": {"executed_lines": [177, 179, 180, 181, 183], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestModImportService.test_search_mods_error_handling_modrinth": {"executed_lines": [190, 192, 193, 194, 196], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestModImportService.test_get_mod_info_curseforge": {"executed_lines": [201, 203, 204, 206], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "TestModImportService.test_get_mod_info_curseforge_search_fallback": {"executed_lines": [213, 218, 219, 221, 222, 225, 226], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestModImportService.test_get_mod_info_curseforge_search_fallback.mock_get_mod_info": {"executed_lines": [214, 216], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [215], "excluded_lines": [], "start_line": 213}, "TestModImportService.test_get_mod_info_modrinth": {"executed_lines": [231, 233, 234, 236], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestModImportService.test_get_mod_info_unsupported_platform": {"executed_lines": [241, 242], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 239}, "TestModImportService.test_get_mod_versions_curseforge": {"executed_lines": [247, 251, 252, 254], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestModImportService.test_get_mod_versions_modrinth": {"executed_lines": [259, 263, 264, 266], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestModImportService.test_get_mod_versions_with_filters": {"executed_lines": [271, 272, 273, 277, 281, 282], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "TestModImportService.test_get_download_url_curseforge": {"executed_lines": [287, 291, 292, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestModImportService.test_get_download_url_modrinth": {"executed_lines": [299, 303, 304, 308], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "TestModImportService.test_get_download_url_unknown_platform": {"executed_lines": [313, 314], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "TestModImportService.test_get_categories_both": {"executed_lines": [319, 320, 322, 323, 324, 326, 327], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestModImportService.test_get_categories_curseforge_only": {"executed_lines": [332, 334, 335, 337], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestModImportService.test_get_categories_modrinth_only": {"executed_lines": [342, 344, 345, 347], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 340}, "TestModImportService.test_get_categories_error_handling": {"executed_lines": [352, 354, 355, 356, 358], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestEdgeCases.test_detect_platform_empty_string": {"executed_lines": [366, 367, 368], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 364}, "TestEdgeCases.test_detect_platform_none": {"executed_lines": [372, 373, 374], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "TestEdgeCases.test_parse_url_empty_string": {"executed_lines": [378, 379, 380], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 376}, "TestEdgeCases.test_parse_url_invalid": {"executed_lines": [384, 385, 386], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 382}, "TestEdgeCases.test_get_mod_info_curseforge_invalid_id": {"executed_lines": [391, 393, 394, 397, 398], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestEdgeCases.test_search_combined_results": {"executed_lines": [403, 405, 406, 410, 411, 415, 416, 417, 420, 421], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "": {"executed_lines": [5, 6, 8, 15, 18, 22, 26, 31, 34, 35, 39, 40, 53, 54, 67, 75, 81, 87, 93, 99, 105, 113, 121, 127, 128, 138, 139, 147, 148, 156, 157, 172, 173, 185, 186, 198, 199, 208, 209, 228, 229, 238, 239, 244, 245, 256, 257, 268, 269, 284, 285, 296, 297, 310, 311, 316, 317, 329, 330, 339, 340, 349, 350, 361, 364, 370, 376, 382, 388, 389, 400, 401], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestModPlatform": {"executed_lines": [20, 24, 28], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestModImportService": {"executed_lines": [37, 42, 43, 46, 47, 48, 49, 50, 51, 56, 57, 60, 61, 62, 63, 64, 65, 69, 70, 71, 72, 73, 77, 78, 79, 83, 84, 85, 89, 90, 91, 95, 96, 97, 101, 102, 103, 107, 108, 109, 110, 111, 115, 116, 117, 118, 119, 123, 124, 125, 130, 131, 132, 134, 135, 136, 141, 142, 143, 145, 150, 151, 152, 154, 159, 160, 161, 170, 177, 179, 180, 181, 183, 190, 192, 193, 194, 196, 201, 203, 204, 206, 213, 214, 216, 218, 219, 221, 222, 225, 226, 231, 233, 234, 236, 241, 242, 247, 251, 252, 254, 259, 263, 264, 266, 271, 272, 273, 277, 281, 282, 287, 291, 292, 294, 299, 303, 304, 308, 313, 314, 319, 320, 322, 323, 324, 326, 327, 332, 334, 335, 337, 342, 344, 345, 347, 352, 354, 355, 356, 358], "summary": {"covered_lines": 141, "num_statements": 142, "percent_covered": 99.29577464788733, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.29577464788733, "percent_statements_covered_display": "99"}, "missing_lines": [215], "excluded_lines": [], "start_line": 31}, "TestEdgeCases": {"executed_lines": [366, 367, 368, 372, 373, 374, 378, 379, 380, 384, 385, 386, 391, 393, 394, 397, 398, 403, 405, 406, 410, 411, 415, 416, 417, 420, 421], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 361}, "": {"executed_lines": [5, 6, 8, 15, 18, 22, 26, 31, 34, 35, 39, 40, 53, 54, 67, 75, 81, 87, 93, 99, 105, 113, 121, 127, 128, 138, 139, 147, 148, 156, 157, 172, 173, 185, 186, 198, 199, 208, 209, 228, 229, 238, 239, 244, 245, 256, 257, 268, 269, 284, 285, 296, 297, 310, 311, 316, 317, 329, 330, 339, 340, 349, 350, 361, 364, 370, 376, 382, 388, 389, 400, 401], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_mode_classifier.py": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 22, 24], "summary": {"covered_lines": 9, "num_statements": 303, "percent_covered": 2.9702970297029703, "percent_covered_display": "3", "missing_lines": 294, "excluded_lines": 0, "percent_statements_covered": 2.9702970297029703, "percent_statements_covered_display": "3"}, "missing_lines": [30, 48, 49, 51, 54, 55, 57, 60, 61, 63, 66, 67, 69, 72, 73, 75, 76, 77, 78, 79, 82, 83, 85, 86, 87, 88, 89, 90, 93, 94, 96, 97, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 112, 113, 115, 116, 117, 118, 121, 122, 124, 152, 153, 155, 164, 165, 167, 178, 179, 181, 201, 202, 204, 237, 240, 242, 244, 245, 246, 248, 250, 252, 253, 254, 255, 257, 259, 262, 263, 264, 265, 266, 268, 270, 272, 274, 275, 276, 278, 280, 281, 282, 283, 285, 287, 289, 291, 292, 293, 294, 296, 298, 300, 302, 305, 307, 308, 315, 318, 320, 322, 323, 324, 326, 328, 330, 331, 332, 334, 336, 338, 339, 340, 342, 346, 375, 378, 379, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 399, 401, 403, 406, 407, 409, 411, 413, 414, 415, 416, 417, 424, 427, 429, 431, 432, 433, 434, 435, 437, 439, 441, 442, 443, 444, 446, 448, 450, 451, 452, 453, 454, 456, 458, 460, 461, 462, 463, 464, 466, 468, 470, 471, 472, 473, 474, 475, 477, 479, 481, 482, 483, 484, 485, 486, 488, 490, 492, 493, 494, 495, 496, 497, 499, 501, 503, 504, 505, 506, 507, 514, 517, 518, 520, 522, 524, 525, 526, 528, 529, 531, 533, 535, 536, 538, 539, 541, 544, 547, 549, 550, 552, 554, 555, 557, 559, 561, 563, 565, 567, 568, 575, 578, 580, 588, 591, 593, 596, 603, 606, 608, 611, 613, 615, 617, 620, 622, 624, 639, 642, 644, 646, 647, 649, 650, 653, 655, 657, 663, 679, 680, 682, 689, 692, 694, 695, 696, 698, 700, 701, 702, 703, 704, 706, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718], "excluded_lines": [], "functions": {"feature_agent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51], "excluded_lines": [], "start_line": 49}, "classifier_agent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [57], "excluded_lines": [], "start_line": 55}, "router_agent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63], "excluded_lines": [], "start_line": 61}, "mode_classifier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [69], "excluded_lines": [], "start_line": 67}, "minimal_jar_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [75, 76, 77, 78, 79], "excluded_lines": [], "start_line": 73}, "simple_mod_jar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85, 86, 87, 88, 89, 90], "excluded_lines": [], "start_line": 83}, "complex_mod_jar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [96, 97, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109], "excluded_lines": [], "start_line": 94}, "empty_jar_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [115, 116, 117, 118], "excluded_lines": [], "start_line": 113}, "blocking_features_mod_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [124], "excluded_lines": [], "start_line": 122}, "simple_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [155], "excluded_lines": [], "start_line": 153}, "standard_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [167], "excluded_lines": [], "start_line": 165}, "complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [181], "excluded_lines": [], "start_line": 179}, "expert_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [204], "excluded_lines": [], "start_line": 202}, "TestFeatureExtractionAgent.test_extract_from_jar_minimal_content_returns_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [242, 244, 245, 246], "excluded_lines": [], "start_line": 240}, "TestFeatureExtractionAgent.test_extract_from_jar_simple_mod_detects_items_and_blocks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [250, 252, 253, 254, 255], "excluded_lines": [], "start_line": 248}, "TestFeatureExtractionAgent.test_extract_from_jar_complex_mod_detects_complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [259, 262, 263, 264, 265, 266, 268], "excluded_lines": [], "start_line": 257}, "TestFeatureExtractionAgent.test_extract_from_jar_empty_jar_returns_zero_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [272, 274, 275, 276], "excluded_lines": [], "start_line": 270}, "TestFeatureExtractionAgent.test_extract_from_jar_detects_mod_loader_forge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [280, 281, 282, 283, 285, 287], "excluded_lines": [], "start_line": 278}, "TestFeatureExtractionAgent.test_extract_from_jar_detects_mod_loader_fabric": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [291, 292, 293, 294, 296, 298], "excluded_lines": [], "start_line": 289}, "TestFeatureExtractionAgent.test_extract_from_jar_handles_corrupt_zip_gracefully": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [302, 305, 307, 308], "excluded_lines": [], "start_line": 300}, "TestClassifierAgent.test_classify_simple_mode_returns_simple": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [320, 322, 323, 324], "excluded_lines": [], "start_line": 318}, "TestClassifierAgent.test_classify_standard_mode_returns_standard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [328, 330, 331, 332], "excluded_lines": [], "start_line": 326}, "TestClassifierAgent.test_classify_complex_mode_returns_complex": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [336, 338, 339, 340], "excluded_lines": [], "start_line": 334}, "TestClassifierAgent.test_classify_expert_mode_returns_expert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [346, 375, 378, 379, 380], "excluded_lines": [], "start_line": 342}, "TestClassifierAgent.test_classify_blocking_features_forces_expert_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [384, 386, 388, 390], "excluded_lines": [], "start_line": 382}, "TestClassifierAgent.test_classify_no_features_returns_default_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [394, 396, 398, 399], "excluded_lines": [], "start_line": 392}, "TestClassifierAgent.test_classify_calculates_convertible_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [403, 406, 407], "excluded_lines": [], "start_line": 401}, "TestClassifierAgent.test_classify_has_alternative_modes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [411, 413, 414, 415, 416, 417], "excluded_lines": [], "start_line": 409}, "TestRouterAgent.test_get_pipeline_config_simple_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [429, 431, 432, 433, 434, 435], "excluded_lines": [], "start_line": 427}, "TestRouterAgent.test_get_pipeline_config_standard_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [439, 441, 442, 443, 444], "excluded_lines": [], "start_line": 437}, "TestRouterAgent.test_get_pipeline_config_complex_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [448, 450, 451, 452, 453, 454], "excluded_lines": [], "start_line": 446}, "TestRouterAgent.test_get_pipeline_config_expert_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [458, 460, 461, 462, 463, 464], "excluded_lines": [], "start_line": 456}, "TestRouterAgent.test_get_recommended_settings_simple_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [468, 470, 471, 472, 473, 474, 475], "excluded_lines": [], "start_line": 466}, "TestRouterAgent.test_get_recommended_settings_standard_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [479, 481, 482, 483, 484, 485, 486], "excluded_lines": [], "start_line": 477}, "TestRouterAgent.test_get_recommended_settings_complex_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [490, 492, 493, 494, 495, 496, 497], "excluded_lines": [], "start_line": 488}, "TestRouterAgent.test_get_recommended_settings_expert_mode_disables_auto_fix": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [501, 503, 504, 505, 506, 507], "excluded_lines": [], "start_line": 499}, "TestModeClassifier.test_classify_with_file_content_simple_mod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [520, 522, 524, 525, 526], "excluded_lines": [], "start_line": 518}, "TestModeClassifier.test_classify_with_features_pre_extracted": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [531, 533, 535, 536], "excluded_lines": [], "start_line": 529}, "TestModeClassifier.test_classify_empty_jar_raises_error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [541, 544, 547], "excluded_lines": [], "start_line": 539}, "TestModeClassifier.test_classify_requires_file_content_or_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [552, 554, 555], "excluded_lines": [], "start_line": 550}, "TestModeClassifier.test_get_pipeline_config_delegates_to_router": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [559, 561], "excluded_lines": [], "start_line": 557}, "TestModeClassifier.test_get_recommended_settings_delegates_to_router": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [565, 567, 568], "excluded_lines": [], "start_line": 563}, "TestModeClassifierEdgeCases.test_classify_features_with_no_complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [580, 588, 591], "excluded_lines": [], "start_line": 578}, "TestModeClassifierEdgeCases.test_classify_features_on_mode_boundaries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [596, 603, 606], "excluded_lines": [], "start_line": 593}, "TestModeClassifierEdgeCases.test_router_returns_standard_for_unknown_mode_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [611, 613], "excluded_lines": [], "start_line": 608}, "TestModeClassifierEdgeCases.test_feature_agent_handles_missing_mcmod_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [617, 620], "excluded_lines": [], "start_line": 615}, "TestModeClassifierEdgeCases.test_classifier_agent_respects_blocking_features_impact": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [624, 639, 642], "excluded_lines": [], "start_line": 622}, "TestModeClassifierEdgeCases.test_estimated_time_scales_with_class_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [646, 647, 649, 650, 653], "excluded_lines": [], "start_line": 644}, "TestModeClassifierEdgeCases.test_convertible_percentage_reduces_for_blocking_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [657, 663, 679, 680, 682], "excluded_lines": [], "start_line": 655}, "TestModelConstants.test_default_classification_rules_exist": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [694, 695, 696], "excluded_lines": [], "start_line": 692}, "TestModelConstants.test_mode_pipelines_cover_all_modes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [700, 701, 702, 703, 704], "excluded_lines": [], "start_line": 698}, "TestModelConstants.test_all_modes_have_required_settings_attributes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718], "excluded_lines": [], "start_line": 706}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 22, 24], "summary": {"covered_lines": 9, "num_statements": 85, "percent_covered": 10.588235294117647, "percent_covered_display": "11", "missing_lines": 76, "excluded_lines": 0, "percent_statements_covered": 10.588235294117647, "percent_statements_covered_display": "11"}, "missing_lines": [30, 48, 49, 54, 55, 60, 61, 66, 67, 72, 73, 82, 83, 93, 94, 112, 113, 121, 122, 152, 153, 164, 165, 178, 179, 201, 202, 237, 240, 248, 257, 270, 278, 289, 300, 315, 318, 326, 334, 342, 382, 392, 401, 409, 424, 427, 437, 446, 456, 466, 477, 488, 499, 514, 517, 518, 528, 529, 538, 539, 549, 550, 557, 563, 575, 578, 593, 608, 615, 622, 644, 655, 689, 692, 698, 706], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeatureExtractionAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 36, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [242, 244, 245, 246, 250, 252, 253, 254, 255, 259, 262, 263, 264, 265, 266, 268, 272, 274, 275, 276, 280, 281, 282, 283, 285, 287, 291, 292, 293, 294, 296, 298, 302, 305, 307, 308], "excluded_lines": [], "start_line": 237}, "TestClassifierAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [320, 322, 323, 324, 328, 330, 331, 332, 336, 338, 339, 340, 346, 375, 378, 379, 380, 384, 386, 388, 390, 394, 396, 398, 399, 403, 406, 407, 411, 413, 414, 415, 416, 417], "excluded_lines": [], "start_line": 315}, "TestRouterAgent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [429, 431, 432, 433, 434, 435, 439, 441, 442, 443, 444, 448, 450, 451, 452, 453, 454, 458, 460, 461, 462, 463, 464, 468, 470, 471, 472, 473, 474, 475, 479, 481, 482, 483, 484, 485, 486, 490, 492, 493, 494, 495, 496, 497, 501, 503, 504, 505, 506, 507], "excluded_lines": [], "start_line": 424}, "TestModeClassifier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [520, 522, 524, 525, 526, 531, 533, 535, 536, 541, 544, 547, 552, 554, 555, 559, 561, 565, 567, 568], "excluded_lines": [], "start_line": 514}, "TestModeClassifierEdgeCases": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [580, 588, 591, 596, 603, 606, 611, 613, 617, 620, 624, 639, 642, 646, 647, 649, 650, 653, 657, 663, 679, 680, 682], "excluded_lines": [], "start_line": 575}, "TestModelConstants": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [694, 695, 696, 700, 701, 702, 703, 704, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718], "excluded_lines": [], "start_line": 689}, "": {"executed_lines": [13, 14, 15, 16, 17, 18, 19, 22, 24], "summary": {"covered_lines": 9, "num_statements": 121, "percent_covered": 7.43801652892562, "percent_covered_display": "7", "missing_lines": 112, "excluded_lines": 0, "percent_statements_covered": 7.43801652892562, "percent_statements_covered_display": "7"}, "missing_lines": [30, 48, 49, 51, 54, 55, 57, 60, 61, 63, 66, 67, 69, 72, 73, 75, 76, 77, 78, 79, 82, 83, 85, 86, 87, 88, 89, 90, 93, 94, 96, 97, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 112, 113, 115, 116, 117, 118, 121, 122, 124, 152, 153, 155, 164, 165, 167, 178, 179, 181, 201, 202, 204, 237, 240, 248, 257, 270, 278, 289, 300, 315, 318, 326, 334, 342, 382, 392, 401, 409, 424, 427, 437, 446, 456, 466, 477, 488, 499, 514, 517, 518, 528, 529, 538, 539, 549, 550, 557, 563, 575, 578, 593, 608, 615, 622, 644, 655, 689, 692, 698, 706], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_modpack_parser.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 24, 25, 26, 27, 28, 30, 31, 35, 36, 38, 39, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 64, 68, 72, 73], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"parser": {"executed_lines": [10], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "test_parse_manifest_data_valid": {"executed_lines": [13, 24, 25, 26, 27, 28], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "test_parse_manifest_data_invalid_type": {"executed_lines": [31, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "test_parse_from_manifest": {"executed_lines": [39, 44, 45, 46, 47], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "test_parse_from_url_modpack": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "test_parse_from_url_mod": {"executed_lines": [57, 58, 59, 60, 61], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "test_curseforge_manifest_properties": {"executed_lines": [64, 68, 72, 73], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 12, 30, 38, 49, 56, 63], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 13, 24, 25, 26, 27, 28, 30, 31, 35, 36, 38, 39, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 64, 68, 72, 73], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_modrinth_modpack_parser.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 18, 19, 35, 37, 39, 40, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68, 70, 71, 73, 74, 75, 76, 81, 83, 84, 86, 87, 89, 90, 91], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"parser": {"executed_lines": [11], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "mock_mrpack_path": {"executed_lines": [15, 18, 19, 35, 37], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "test_modrinth_parser_init": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "test_parse_from_file_not_found": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "test_parse_from_file_invalid_extension": {"executed_lines": [47, 48, 49, 50], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "test_parse_mrpack_valid": {"executed_lines": [53, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "test_parse_mrpack_missing_index": {"executed_lines": [66, 67, 68, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "test_parse_mrpack_no_files": {"executed_lines": [74, 75, 76, 81, 83, 84], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "test_parse_modpack_convenience_function": {"executed_lines": [87, 89, 90, 91], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 14, 39, 42, 46, 52, 65, 73, 86], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 18, 19, 35, 37, 39, 40, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 68, 70, 71, 73, 74, 75, 76, 81, 83, 84, 86, 87, 89, 90, 91], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_modrinth_service.py": {"executed_lines": [9, 10, 11, 13, 21, 24, 26, 28, 29, 31, 33, 35, 36, 37, 39, 41, 43, 44, 45, 47, 49, 51, 52, 54, 55, 57, 59, 73, 74, 75, 76, 79, 80, 81, 83, 85, 86, 88, 89, 91, 93, 100, 101, 102, 103, 106, 107, 108, 110, 119, 121, 122, 124, 126, 134, 135, 136, 137, 140, 141, 142, 144, 146, 147, 149, 150, 152, 154, 163, 164, 165, 166, 169, 170, 171, 173, 175, 176, 178, 179, 181, 183, 196, 197, 198, 199, 202, 203, 204, 206, 208, 209, 211, 212, 214, 216, 226, 227, 228, 229, 232, 233, 234, 236, 238, 239, 241, 242, 244, 246, 256, 257, 258, 259, 262, 263, 264, 266, 268, 269, 271, 272, 274, 276, 281, 282, 283, 284, 287, 288, 289, 291, 293, 294, 296, 297, 299, 301, 307, 308, 309, 310, 313, 314, 315, 317, 319, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 335, 336, 339, 342, 344, 346, 348, 349, 350, 351, 353, 355, 357, 361, 362, 363, 365, 367, 369, 371, 372, 373, 375, 377, 379, 381, 382, 383, 385, 387, 389, 393, 394, 396, 398, 400, 402, 404, 406, 408, 412, 414, 416, 418, 420, 421, 424, 427, 429, 430, 432, 434, 436, 439, 442, 443, 445, 447, 449, 450, 451, 452, 455, 456, 457, 459, 461, 463, 464, 466, 468, 469, 470, 471, 474, 475, 476, 478, 479, 481, 482, 484, 486, 488, 489, 490, 491, 494, 495, 496, 498, 500, 502, 503, 505, 507, 517, 518, 519, 520, 523, 524, 525, 527, 532, 534, 536, 538, 540, 542, 544, 546, 548, 551, 554, 555, 557, 559, 573, 581, 582, 585, 587, 588, 589, 590, 594, 598, 599, 600, 601, 604, 605, 608, 609, 612], "summary": {"covered_lines": 294, "num_statements": 295, "percent_covered": 99.66101694915254, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.66101694915254, "percent_statements_covered_display": "99"}, "missing_lines": [613], "excluded_lines": [], "functions": {"TestModrinthService.test_init_default": {"executed_lines": [26, 28, 29], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestModrinthService.test_init_with_token": {"executed_lines": [33, 35, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestModrinthService.test_headers_without_token": {"executed_lines": [41, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestModrinthService.test_headers_with_token": {"executed_lines": [49, 51, 52], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestModrinthService.test_search_mods_success": {"executed_lines": [57, 59, 73, 74, 75, 76, 79, 80, 81, 83, 85, 86], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestModrinthService.test_search_mods_with_filters": {"executed_lines": [91, 93, 100, 101, 102, 103, 106, 107, 108, 110, 119], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestModrinthService.test_get_project_success": {"executed_lines": [124, 126, 134, 135, 136, 137, 140, 141, 142, 144, 146, 147], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestModrinthService.test_get_project_versions_success": {"executed_lines": [152, 154, 163, 164, 165, 166, 169, 170, 171, 173, 175, 176], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestModrinthService.test_get_version_success": {"executed_lines": [181, 183, 196, 197, 198, 199, 202, 203, 204, 206, 208, 209], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "TestModrinthService.test_get_file_download_url_success": {"executed_lines": [214, 216, 226, 227, 228, 229, 232, 233, 234, 236, 238, 239], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestModrinthService.test_get_file_download_url_with_hash": {"executed_lines": [244, 246, 256, 257, 258, 259, 262, 263, 264, 266, 268, 269], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 242}, "TestModrinthService.test_get_categories_success": {"executed_lines": [274, 276, 281, 282, 283, 284, 287, 288, 289, 291, 293, 294], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestModrinthService.test_get_loaders_success": {"executed_lines": [299, 301, 307, 308, 309, 310, 313, 314, 315, 317, 319, 320], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 297}, "TestModrinthService.test_api_error_handling": {"executed_lines": [325, 327, 328, 329, 330, 331, 332, 333, 335, 336], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 323}, "TestModrinthURLParsing.test_parse_mod_url": {"executed_lines": [344, 346, 348, 349, 350, 351], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestModrinthURLParsing.test_parse_resourcepack_url": {"executed_lines": [355, 357, 361, 362, 363], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 353}, "TestModrinthURLParsing.test_parse_plugin_url": {"executed_lines": [367, 369, 371, 372, 373], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestModrinthURLParsing.test_parse_pack_url": {"executed_lines": [377, 379, 381, 382, 383], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 375}, "TestModrinthURLParsing.test_parse_url_with_query_params": {"executed_lines": [387, 389, 393, 394], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "TestModrinthURLParsing.test_parse_invalid_url": {"executed_lines": [398, 400, 402], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 396}, "TestModrinthURLParsing.test_parse_curseforge_url": {"executed_lines": [406, 408, 412], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404}, "TestModrinthURLParsing.test_parse_url_with_trailing_slash": {"executed_lines": [416, 418, 420, 421], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestModrinthServiceSingleton.test_singleton_exists": {"executed_lines": [429, 430], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427}, "TestModrinthServiceSingleton.test_singleton_is_consistent": {"executed_lines": [434, 436], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "TestModrinthServiceEdgeCases.test_search_empty_query": {"executed_lines": [445, 447, 449, 450, 451, 452, 455, 456, 457, 459, 461], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443}, "TestModrinthServiceEdgeCases.test_get_project_nonexistent": {"executed_lines": [466, 468, 469, 470, 471, 474, 475, 476, 478, 479], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 464}, "TestModrinthServiceEdgeCases.test_get_file_download_url_no_files": {"executed_lines": [484, 486, 488, 489, 490, 491, 494, 495, 496, 498, 500], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482}, "TestModrinthServiceEdgeCases.test_get_file_download_url_hash_mismatch": {"executed_lines": [505, 507, 517, 518, 519, 520, 523, 524, 525, 527, 532], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503}, "TestModrinthServiceEdgeCases.test_parse_url_empty_string": {"executed_lines": [536, 538, 540], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534}, "TestModrinthServiceEdgeCases.test_parse_url_none": {"executed_lines": [544, 546, 548], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542}, "TestModrinthServiceIntegration.test_full_search_workflow": {"executed_lines": [557, 559, 573, 581, 582, 585, 587, 598, 599, 600, 601, 604, 605, 608, 609], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 555}, "TestModrinthServiceIntegration.test_full_search_workflow.get_side_effect": {"executed_lines": [588, 589, 590, 594], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 587}, "": {"executed_lines": [9, 10, 11, 13, 21, 24, 31, 39, 47, 54, 55, 88, 89, 121, 122, 149, 150, 178, 179, 211, 212, 241, 242, 271, 272, 296, 297, 322, 323, 339, 342, 353, 365, 375, 385, 396, 404, 414, 424, 427, 432, 439, 442, 443, 463, 464, 481, 482, 502, 503, 534, 542, 551, 554, 555, 612], "summary": {"covered_lines": 56, "num_statements": 57, "percent_covered": 98.24561403508773, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.24561403508773, "percent_statements_covered_display": "98"}, "missing_lines": [613], "excluded_lines": [], "start_line": 1}}, "classes": {"TestModrinthService": {"executed_lines": [26, 28, 29, 33, 35, 36, 37, 41, 43, 44, 45, 49, 51, 52, 57, 59, 73, 74, 75, 76, 79, 80, 81, 83, 85, 86, 91, 93, 100, 101, 102, 103, 106, 107, 108, 110, 119, 124, 126, 134, 135, 136, 137, 140, 141, 142, 144, 146, 147, 152, 154, 163, 164, 165, 166, 169, 170, 171, 173, 175, 176, 181, 183, 196, 197, 198, 199, 202, 203, 204, 206, 208, 209, 214, 216, 226, 227, 228, 229, 232, 233, 234, 236, 238, 239, 244, 246, 256, 257, 258, 259, 262, 263, 264, 266, 268, 269, 274, 276, 281, 282, 283, 284, 287, 288, 289, 291, 293, 294, 299, 301, 307, 308, 309, 310, 313, 314, 315, 317, 319, 320, 325, 327, 328, 329, 330, 331, 332, 333, 335, 336], "summary": {"covered_lines": 131, "num_statements": 131, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestModrinthURLParsing": {"executed_lines": [344, 346, 348, 349, 350, 351, 355, 357, 361, 362, 363, 367, 369, 371, 372, 373, 377, 379, 381, 382, 383, 387, 389, 393, 394, 398, 400, 402, 406, 408, 412, 416, 418, 420, 421], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 339}, "TestModrinthServiceSingleton": {"executed_lines": [429, 430, 434, 436], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 424}, "TestModrinthServiceEdgeCases": {"executed_lines": [445, 447, 449, 450, 451, 452, 455, 456, 457, 459, 461, 466, 468, 469, 470, 471, 474, 475, 476, 478, 479, 484, 486, 488, 489, 490, 491, 494, 495, 496, 498, 500, 505, 507, 517, 518, 519, 520, 523, 524, 525, 527, 532, 536, 538, 540, 544, 546, 548], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 439}, "TestModrinthServiceIntegration": {"executed_lines": [557, 559, 573, 581, 582, 585, 587, 588, 589, 590, 594, 598, 599, 600, 601, 604, 605, 608, 609], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 551}, "": {"executed_lines": [9, 10, 11, 13, 21, 24, 31, 39, 47, 54, 55, 88, 89, 121, 122, 149, 150, 178, 179, 211, 212, 241, 242, 271, 272, 296, 297, 322, 323, 339, 342, 353, 365, 375, 385, 396, 404, 414, 424, 427, 432, 439, 442, 443, 463, 464, 481, 482, 502, 503, 534, 542, 551, 554, 555, 612], "summary": {"covered_lines": 56, "num_statements": 57, "percent_covered": 98.24561403508773, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.24561403508773, "percent_statements_covered_display": "98"}, "missing_lines": [613], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_one_click_converter.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 20, 22], "summary": {"covered_lines": 10, "num_statements": 223, "percent_covered": 4.484304932735426, "percent_covered_display": "4", "missing_lines": 213, "excluded_lines": 0, "percent_statements_covered": 4.484304932735426, "percent_statements_covered_display": "4"}, "missing_lines": [32, 45, 46, 48, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 62, 63, 66, 67, 69, 70, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 90, 93, 94, 96, 103, 106, 108, 113, 114, 115, 116, 117, 119, 121, 126, 127, 129, 131, 136, 137, 139, 141, 148, 155, 158, 160, 165, 166, 167, 169, 171, 176, 183, 186, 187, 189, 193, 195, 196, 197, 198, 199, 201, 202, 204, 208, 210, 211, 213, 214, 216, 220, 222, 223, 225, 226, 228, 232, 234, 235, 237, 238, 240, 245, 247, 249, 250, 252, 254, 257, 258, 259, 266, 269, 270, 272, 276, 278, 279, 280, 282, 283, 285, 287, 288, 290, 292, 293, 295, 296, 298, 300, 301, 303, 304, 306, 308, 310, 311, 313, 314, 316, 318, 319, 320, 321, 322, 324, 325, 328, 330, 332, 333, 335, 336, 339, 350, 353, 355, 365, 366, 367, 368, 369, 376, 379, 380, 382, 384, 387, 393, 395, 396, 398, 400, 402, 403, 410, 413, 414, 416, 418, 420, 422, 423, 425, 427, 432, 440, 443, 444, 446, 448, 450, 451, 452, 454, 455, 457, 459, 461, 468, 471, 473, 474, 476, 483, 486, 487, 489, 491, 493, 494, 496, 497, 499, 501, 503, 504], "excluded_lines": [], "functions": {"minimal_jar_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [48, 49, 50, 51, 52], "excluded_lines": [], "start_line": 46}, "simple_mod_jar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [58, 59, 60, 61, 62, 63], "excluded_lines": [], "start_line": 56}, "complex_mod_jar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [69, 70, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84], "excluded_lines": [], "start_line": 67}, "converter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90], "excluded_lines": [], "start_line": 88}, "supervisor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [96], "excluded_lines": [], "start_line": 94}, "TestPipelineStatus.test_pipeline_status_initialization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [108, 113, 114, 115, 116, 117], "excluded_lines": [], "start_line": 106}, "TestPipelineStatus.test_pipeline_is_complete_when_ready": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [121, 126, 127], "excluded_lines": [], "start_line": 119}, "TestPipelineStatus.test_pipeline_is_error_when_error_stage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [131, 136, 137], "excluded_lines": [], "start_line": 129}, "TestPipelineStatus.test_pipeline_elapsed_seconds": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [141, 148], "excluded_lines": [], "start_line": 139}, "TestRequestResponse.test_request_with_file_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [160, 165, 166, 167], "excluded_lines": [], "start_line": 158}, "TestRequestResponse.test_request_with_auto_start": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [171, 176], "excluded_lines": [], "start_line": 169}, "TestPipelineSupervisor.test_execute_pipeline_completes_all_stages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [189, 193, 195, 196, 197, 198, 199], "excluded_lines": [], "start_line": 187}, "TestPipelineSupervisor.test_execute_pipeline_detects_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [204, 208, 210, 211], "excluded_lines": [], "start_line": 202}, "TestPipelineSupervisor.test_execute_pipeline_extracts_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [216, 220, 222, 223], "excluded_lines": [], "start_line": 214}, "TestPipelineSupervisor.test_execute_pipeline_returns_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [228, 232, 234, 235], "excluded_lines": [], "start_line": 226}, "TestPipelineSupervisor.test_execute_pipeline_with_user_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [240, 245, 247], "excluded_lines": [], "start_line": 238}, "TestPipelineSupervisor.test_execute_pipeline_no_file_sets_error_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [252, 254, 257, 258, 259], "excluded_lines": [], "start_line": 250}, "TestOneClickConverter.test_initiate_returns_response": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [272, 276, 278, 279, 280], "excluded_lines": [], "start_line": 270}, "TestOneClickConverter.test_initiate_pipeline_id_unique": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [285, 287, 288, 290], "excluded_lines": [], "start_line": 283}, "TestOneClickConverter.test_get_status_returns_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [295, 296, 298, 300, 301], "excluded_lines": [], "start_line": 293}, "TestOneClickConverter.test_get_status_unknown_pipeline_returns_none": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [306, 308], "excluded_lines": [], "start_line": 304}, "TestOneClickConverter.test_get_ready_conversion_when_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [313, 314, 316, 318, 319, 320, 321, 322], "excluded_lines": [], "start_line": 311}, "TestOneClickConverter.test_get_ready_conversion_when_not_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [328, 330], "excluded_lines": [], "start_line": 325}, "TestOneClickConverter.test_learn_from_completion_logs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [335, 336, 339], "excluded_lines": [], "start_line": 333}, "TestReadyToConvert.test_ready_to_convert_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [355, 365, 366, 367, 368, 369], "excluded_lines": [], "start_line": 353}, "TestPipelineStages.test_stage_order_upload_classify_defaults_ready": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [382, 384, 387, 393], "excluded_lines": [], "start_line": 380}, "TestPipelineStages.test_pipeline_records_warnings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [398, 400, 402, 403], "excluded_lines": [], "start_line": 396}, "TestModeDetection.test_detects_simple_mode_for_minimal_mod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [416, 418, 420], "excluded_lines": [], "start_line": 414}, "TestModeDetection.test_detects_higher_mode_for_complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [425, 427, 432], "excluded_lines": [], "start_line": 423}, "TestSettingsApplication.test_settings_applied_from_smart_defaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [446, 448, 450, 451, 452], "excluded_lines": [], "start_line": 444}, "TestSettingsApplication.test_settings_reflect_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [457, 459, 461], "excluded_lines": [], "start_line": 455}, "TestSingleton.test_get_one_click_converter_returns_same_instance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [473, 474, 476], "excluded_lines": [], "start_line": 471}, "TestErrorHandling.test_pipeline_handles_missing_file_gracefully": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [489, 491, 493, 494], "excluded_lines": [], "start_line": 487}, "TestErrorHandling.test_response_contains_error_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [499, 501, 503, 504], "excluded_lines": [], "start_line": 497}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 20, 22], "summary": {"covered_lines": 10, "num_statements": 81, "percent_covered": 12.345679012345679, "percent_covered_display": "12", "missing_lines": 71, "excluded_lines": 0, "percent_statements_covered": 12.345679012345679, "percent_statements_covered_display": "12"}, "missing_lines": [32, 45, 46, 55, 56, 66, 67, 87, 88, 93, 94, 103, 106, 119, 129, 139, 155, 158, 169, 183, 186, 187, 201, 202, 213, 214, 225, 226, 237, 238, 249, 250, 266, 269, 270, 282, 283, 292, 293, 303, 304, 310, 311, 324, 325, 332, 333, 350, 353, 376, 379, 380, 395, 396, 410, 413, 414, 422, 423, 440, 443, 444, 454, 455, 468, 471, 483, 486, 487, 496, 497], "excluded_lines": [], "start_line": 1}}, "classes": {"TestPipelineStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [108, 113, 114, 115, 116, 117, 121, 126, 127, 131, 136, 137, 141, 148], "excluded_lines": [], "start_line": 103}, "TestRequestResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [160, 165, 166, 167, 171, 176], "excluded_lines": [], "start_line": 155}, "TestPipelineSupervisor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [189, 193, 195, 196, 197, 198, 199, 204, 208, 210, 211, 216, 220, 222, 223, 228, 232, 234, 235, 240, 245, 247, 252, 254, 257, 258, 259], "excluded_lines": [], "start_line": 183}, "TestOneClickConverter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [272, 276, 278, 279, 280, 285, 287, 288, 290, 295, 296, 298, 300, 301, 306, 308, 313, 314, 316, 318, 319, 320, 321, 322, 328, 330, 335, 336, 339], "excluded_lines": [], "start_line": 266}, "TestReadyToConvert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [355, 365, 366, 367, 368, 369], "excluded_lines": [], "start_line": 350}, "TestPipelineStages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [382, 384, 387, 393, 398, 400, 402, 403], "excluded_lines": [], "start_line": 376}, "TestModeDetection": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [416, 418, 420, 425, 427, 432], "excluded_lines": [], "start_line": 410}, "TestSettingsApplication": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [446, 448, 450, 451, 452, 457, 459, 461], "excluded_lines": [], "start_line": 440}, "TestSingleton": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [473, 474, 476], "excluded_lines": [], "start_line": 468}, "TestErrorHandling": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [489, 491, 493, 494, 499, 501, 503, 504], "excluded_lines": [], "start_line": 483}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 16, 17, 20, 22], "summary": {"covered_lines": 10, "num_statements": 108, "percent_covered": 9.25925925925926, "percent_covered_display": "9", "missing_lines": 98, "excluded_lines": 0, "percent_statements_covered": 9.25925925925926, "percent_statements_covered_display": "9"}, "missing_lines": [32, 45, 46, 48, 49, 50, 51, 52, 55, 56, 58, 59, 60, 61, 62, 63, 66, 67, 69, 70, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 90, 93, 94, 96, 103, 106, 119, 129, 139, 155, 158, 169, 183, 186, 187, 201, 202, 213, 214, 225, 226, 237, 238, 249, 250, 266, 269, 270, 282, 283, 292, 293, 303, 304, 310, 311, 324, 325, 332, 333, 350, 353, 376, 379, 380, 395, 396, 410, 413, 414, 422, 423, 440, 443, 444, 454, 455, 468, 471, 483, 486, 487, 496, 497], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_progress_callback.py": {"executed_lines": [3, 4, 5, 13, 16, 18, 19, 20, 22, 24, 25, 27, 29, 30, 31, 32, 34, 36, 37, 38, 40, 41, 43, 44, 45, 47, 49, 50, 51, 53, 54, 56, 58, 59, 61, 63, 64, 66, 67, 69, 71, 73, 74, 77, 79, 80, 82, 83, 85, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 105, 111, 112, 113, 114, 116, 117, 119, 122, 129, 131, 132, 134, 136, 137, 139, 142, 148, 150, 152, 154, 156, 158, 159, 161, 163, 164, 166, 168, 171, 174, 177, 179, 180, 181, 182, 183, 184, 185, 187, 189, 190, 191, 192, 193, 194, 195, 198, 201, 203, 204, 206, 208, 210, 212], "summary": {"covered_lines": 114, "num_statements": 114, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestProgressCallback.test_init": {"executed_lines": [18, 19, 20], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestProgressCallback.test_subscribe_new_job": {"executed_lines": [24, 25, 27, 29, 30, 31, 32], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestProgressCallback.test_subscribe_existing_job": {"executed_lines": [36, 37, 38, 40, 41, 43, 44, 45], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestProgressCallback.test_unsubscribe_callback": {"executed_lines": [49, 50, 51, 53, 54, 56, 58, 59], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestProgressCallback.test_unsubscribe_last_callback_removes_job": {"executed_lines": [63, 64, 66, 67, 69], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestProgressCallback.test_unsubscribe_nonexistent_job": {"executed_lines": [73, 74, 77], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestProgressCallback.test_update_progress_stores_history": {"executed_lines": [82, 83, 85, 92, 93, 94, 95, 96], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "TestProgressCallback.test_update_progress_notifies_subscribers": {"executed_lines": [101, 102, 103, 105, 111, 112, 113, 114], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestProgressCallback.test_update_progress_without_subscribers": {"executed_lines": [119, 122, 129], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestProgressCallback.test_update_progress_handles_callback_exception": {"executed_lines": [134, 136, 139, 142], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestProgressCallback.test_update_progress_handles_callback_exception.failing_callback": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestProgressCallback.test_get_progress_history_nonexistent_job": {"executed_lines": [150, 152, 154], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "TestProgressCallback.test_cleanup_job": {"executed_lines": [158, 159, 161, 163, 164], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TestProgressCallback.test_cleanup_nonexistent_job": {"executed_lines": [168, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestConversionStages.test_stage_constants": {"executed_lines": [179, 180, 181, 182, 183, 184, 185], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestConversionStages.test_stage_progress_mapping": {"executed_lines": [189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestGetProgressCallback.test_returns_singleton": {"executed_lines": [203, 204, 206], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestGetProgressCallback.test_singleton_is_progress_callback_instance": {"executed_lines": [210, 212], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208}, "": {"executed_lines": [3, 4, 5, 13, 16, 22, 34, 47, 61, 71, 79, 80, 98, 99, 116, 117, 131, 132, 148, 156, 166, 174, 177, 187, 198, 201, 208], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestProgressCallback": {"executed_lines": [18, 19, 20, 24, 25, 27, 29, 30, 31, 32, 36, 37, 38, 40, 41, 43, 44, 45, 49, 50, 51, 53, 54, 56, 58, 59, 63, 64, 66, 67, 69, 73, 74, 77, 82, 83, 85, 92, 93, 94, 95, 96, 101, 102, 103, 105, 111, 112, 113, 114, 119, 122, 129, 134, 136, 137, 139, 142, 150, 152, 154, 158, 159, 161, 163, 164, 168, 171], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestConversionStages": {"executed_lines": [179, 180, 181, 182, 183, 184, 185, 189, 190, 191, 192, 193, 194, 195], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestGetProgressCallback": {"executed_lines": [203, 204, 206, 210, 212], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "": {"executed_lines": [3, 4, 5, 13, 16, 22, 34, 47, 61, 71, 79, 80, 98, 99, 116, 117, 131, 132, 148, 156, 166, 174, 177, 187, 198, 201, 208], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_progress_callback_service_coverage.py": {"executed_lines": [5, 6, 7, 15, 18, 19, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 53, 54, 56, 58, 59, 60, 61, 62, 68, 69, 70, 71, 73, 74, 75, 80, 85, 86, 87, 88, 90, 91, 92, 98, 99, 101, 102, 103, 104, 106, 112, 113, 115, 121, 122, 124, 125, 126, 128, 129, 130, 131, 132, 133, 135, 137, 140, 143, 144, 145, 146, 147, 148, 149, 150, 153, 156, 157, 158, 159, 160, 161, 162, 163, 165, 166, 175, 178, 181, 183, 184, 185, 186, 188, 189, 190, 191], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestProgressCallback.callback_system": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestProgressCallback.test_initialization": {"executed_lines": [23, 24], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestProgressCallback.test_subscribe": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestProgressCallback.test_subscribe_multiple_callbacks": {"executed_lines": [35, 36, 37, 38, 39], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestProgressCallback.test_unsubscribe": {"executed_lines": [43, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestProgressCallback.test_unsubscribe_removes_empty_jobs": {"executed_lines": [50, 51, 53, 54, 56], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestProgressCallback.test_update_progress_notifies_subscribers": {"executed_lines": [60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "TestProgressCallback.test_update_progress_stores_history": {"executed_lines": [75, 80, 85, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestProgressCallback.test_update_progress_with_metadata": {"executed_lines": [92, 98, 99], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestProgressCallback.test_update_progress_handles_callback_error": {"executed_lines": [103, 104, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestProgressCallback.test_update_progress_without_subscribers": {"executed_lines": [115, 121, 122], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestProgressCallback.test_get_progress_history_empty": {"executed_lines": [125, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestProgressCallback.test_cleanup_job": {"executed_lines": [129, 130, 131, 132, 133], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestProgressCallback.test_cleanup_nonexistent_job": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestConversionStages.test_stage_constants": {"executed_lines": [144, 145, 146, 147, 148, 149, 150], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "TestStageProgress.test_stage_progress_mapping": {"executed_lines": [157, 158, 159, 160, 161, 162, 163], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TestStageProgress.test_all_stages_have_progress": {"executed_lines": [166, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestGetProgressCallback.test_singleton_returns_same_instance": {"executed_lines": [183, 184, 185, 186], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestGetProgressCallback.test_singleton_is_progress_callback": {"executed_lines": [189, 190, 191], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "": {"executed_lines": [5, 6, 7, 15, 18, 19, 22, 26, 27, 33, 34, 41, 42, 48, 49, 58, 59, 73, 74, 90, 91, 101, 102, 112, 113, 124, 128, 135, 140, 143, 153, 156, 165, 178, 181, 188], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestProgressCallback": {"executed_lines": [20, 23, 24, 28, 29, 30, 31, 35, 36, 37, 38, 39, 43, 44, 45, 46, 50, 51, 53, 54, 56, 60, 61, 62, 68, 69, 70, 71, 75, 80, 85, 86, 87, 88, 92, 98, 99, 103, 104, 106, 115, 121, 122, 125, 126, 129, 130, 131, 132, 133, 137], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestConversionStages": {"executed_lines": [144, 145, 146, 147, 148, 149, 150], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestStageProgress": {"executed_lines": [157, 158, 159, 160, 161, 162, 163, 166, 175], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestGetProgressCallback": {"executed_lines": [183, 184, 185, 186, 189, 190, 191], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "": {"executed_lines": [5, 6, 7, 15, 18, 19, 22, 26, 27, 33, 34, 41, 42, 48, 49, 58, 59, 73, 74, 90, 91, 101, 102, 112, 113, 124, 128, 135, 140, 143, 153, 156, 165, 178, 181, 188], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_progress_handler.py": {"executed_lines": [5, 6, 7, 8], "summary": {"covered_lines": 4, "num_statements": 145, "percent_covered": 2.7586206896551726, "percent_covered_display": "3", "missing_lines": 141, "excluded_lines": 0, "percent_statements_covered": 2.7586206896551726, "percent_statements_covered_display": "3"}, "missing_lines": [17, 20, 22, 23, 24, 25, 26, 29, 32, 34, 41, 42, 43, 44, 45, 47, 49, 56, 57, 59, 61, 63, 71, 73, 75, 82, 84, 86, 88, 96, 99, 102, 104, 113, 115, 117, 127, 130, 133, 135, 142, 143, 144, 145, 146, 148, 150, 158, 161, 164, 165, 167, 168, 170, 178, 179, 180, 182, 183, 185, 186, 188, 193, 195, 196, 198, 199, 201, 207, 208, 209, 210, 212, 213, 215, 216, 218, 225, 226, 227, 228, 229, 231, 232, 234, 235, 237, 242, 243, 244, 245, 246, 248, 249, 251, 252, 254, 260, 261, 262, 263, 264, 266, 267, 269, 270, 272, 277, 278, 279, 280, 282, 283, 285, 286, 288, 293, 294, 295, 296, 297, 299, 300, 302, 303, 306, 314, 317, 320, 322, 329, 331, 332, 333, 334, 336, 338, 340, 347, 349, 350], "excluded_lines": [], "functions": {"TestAgentStatus.test_all_statuses": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [22, 23, 24, 25, 26], "excluded_lines": [], "start_line": 20}, "TestProgressMessageData.test_valid_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34, 41, 42, 43, 44, 45], "excluded_lines": [], "start_line": 32}, "TestProgressMessageData.test_default_timestamp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [49, 56, 57], "excluded_lines": [], "start_line": 47}, "TestProgressMessageData.test_custom_timestamp": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61, 63, 71], "excluded_lines": [], "start_line": 59}, "TestProgressMessageData.test_details_optional": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [75, 82], "excluded_lines": [], "start_line": 73}, "TestProgressMessageData.test_details_with_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [86, 88, 96], "excluded_lines": [], "start_line": 84}, "TestProgressMessage.test_default_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [104, 113], "excluded_lines": [], "start_line": 102}, "TestProgressMessage.test_custom_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 127], "excluded_lines": [], "start_line": 115}, "TestProgressMessageFunction.test_create_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [135, 142, 143, 144, 145, 146], "excluded_lines": [], "start_line": 133}, "TestProgressMessageFunction.test_create_with_details": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150, 158], "excluded_lines": [], "start_line": 148}, "TestProgressHandler.test_broadcast_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [167, 168, 170, 178, 179, 180], "excluded_lines": [], "start_line": 165}, "TestProgressHandler.test_broadcast_agent_start": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [185, 186, 188, 193], "excluded_lines": [], "start_line": 183}, "TestProgressHandler.test_broadcast_agent_start_custom_message": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [198, 199, 201, 207, 208, 209, 210], "excluded_lines": [], "start_line": 196}, "TestProgressHandler.test_broadcast_agent_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [215, 216, 218, 225, 226, 227, 228, 229], "excluded_lines": [], "start_line": 213}, "TestProgressHandler.test_broadcast_agent_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [234, 235, 237, 242, 243, 244, 245, 246], "excluded_lines": [], "start_line": 232}, "TestProgressHandler.test_broadcast_agent_failed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [251, 252, 254, 260, 261, 262, 263, 264], "excluded_lines": [], "start_line": 249}, "TestProgressHandler.test_broadcast_conversion_complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [269, 270, 272, 277, 278, 279, 280], "excluded_lines": [], "start_line": 267}, "TestProgressHandler.test_broadcast_conversion_failed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [285, 286, 288, 293, 294, 295, 296, 297], "excluded_lines": [], "start_line": 283}, "TestProgressHandler.test_broadcast_error_handling": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [302, 303, 306, 314], "excluded_lines": [], "start_line": 300}, "TestProgressMessageSerialization.test_model_dump": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [322, 329, 331, 332, 333, 334], "excluded_lines": [], "start_line": 320}, "TestProgressMessageSerialization.test_json_serialization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [338, 340, 347, 349, 350], "excluded_lines": [], "start_line": 336}, "": {"executed_lines": [5, 6, 7, 8], "summary": {"covered_lines": 4, "num_statements": 40, "percent_covered": 10.0, "percent_covered_display": "10", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 10.0, "percent_statements_covered_display": "10"}, "missing_lines": [17, 20, 29, 32, 47, 59, 73, 84, 99, 102, 115, 130, 133, 148, 161, 164, 165, 182, 183, 195, 196, 212, 213, 231, 232, 248, 249, 266, 267, 282, 283, 299, 300, 317, 320, 336], "excluded_lines": [], "start_line": 1}}, "classes": {"TestAgentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [22, 23, 24, 25, 26], "excluded_lines": [], "start_line": 17}, "TestProgressMessageData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34, 41, 42, 43, 44, 45, 49, 56, 57, 61, 63, 71, 75, 82, 86, 88, 96], "excluded_lines": [], "start_line": 29}, "TestProgressMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [104, 113, 117, 127], "excluded_lines": [], "start_line": 99}, "TestProgressMessageFunction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [135, 142, 143, 144, 145, 146, 150, 158], "excluded_lines": [], "start_line": 130}, "TestProgressHandler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [167, 168, 170, 178, 179, 180, 185, 186, 188, 193, 198, 199, 201, 207, 208, 209, 210, 215, 216, 218, 225, 226, 227, 228, 229, 234, 235, 237, 242, 243, 244, 245, 246, 251, 252, 254, 260, 261, 262, 263, 264, 269, 270, 272, 277, 278, 279, 280, 285, 286, 288, 293, 294, 295, 296, 297, 302, 303, 306, 314], "excluded_lines": [], "start_line": 161}, "TestProgressMessageSerialization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [322, 329, 331, 332, 333, 334, 338, 340, 347, 349, 350], "excluded_lines": [], "start_line": 317}, "": {"executed_lines": [5, 6, 7, 8], "summary": {"covered_lines": 4, "num_statements": 40, "percent_covered": 10.0, "percent_covered_display": "10", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 10.0, "percent_statements_covered_display": "10"}, "missing_lines": [17, 20, 29, 32, 47, 59, 73, 84, 99, 102, 115, 130, 133, 148, 161, 164, 165, 182, 183, 195, 196, 212, 213, 231, 232, 248, 249, 266, 267, 282, 283, 299, 300, 317, 320, 336], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_quality_validator.py": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 90, "percent_covered": 2.2222222222222223, "percent_covered_display": "2", "missing_lines": 88, "excluded_lines": 0, "percent_statements_covered": 2.2222222222222223, "percent_statements_covered_display": "2"}, "missing_lines": [12, 15, 17, 23, 24, 25, 28, 31, 32, 34, 36, 38, 39, 41, 43, 44, 46, 48, 49, 51, 53, 54, 56, 58, 59, 61, 63, 64, 66, 68, 69, 71, 73, 74, 76, 78, 79, 81, 83, 84, 86, 88, 89, 91, 93, 94, 96, 98, 99, 101, 103, 104, 106, 108, 109, 111, 113, 114, 116, 118, 119, 120, 122, 124, 125, 127, 129, 130, 131, 133, 136, 139, 140, 141, 143, 146, 147, 148, 151, 152, 153, 155, 158, 159, 160, 163, 164, 165], "excluded_lines": [], "functions": {"TestValidationResult.test_creation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [17, 23, 24, 25], "excluded_lines": [], "start_line": 15}, "TestQualityValidator.validator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34], "excluded_lines": [], "start_line": 32}, "TestQualityValidator.test_valid_document": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38, 39, 41, 43, 44], "excluded_lines": [], "start_line": 36}, "TestQualityValidator.test_content_too_short": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [48, 49, 51, 53, 54], "excluded_lines": [], "start_line": 46}, "TestQualityValidator.test_content_too_long": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [58, 59, 61, 63, 64], "excluded_lines": [], "start_line": 56}, "TestQualityValidator.test_empty_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68, 69, 71, 73, 74], "excluded_lines": [], "start_line": 66}, "TestQualityValidator.test_whitespace_only_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [78, 79, 81, 83, 84], "excluded_lines": [], "start_line": 76}, "TestQualityValidator.test_non_meaningful_content": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [88, 89, 91, 93, 94], "excluded_lines": [], "start_line": 86}, "TestQualityValidator.test_missing_title_warning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98, 99, 101, 103, 104], "excluded_lines": [], "start_line": 96}, "TestQualityValidator.test_missing_source_warning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [108, 109, 111, 113, 114], "excluded_lines": [], "start_line": 106}, "TestQualityValidator.test_repetitive_content_warning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [118, 119, 120, 122, 124, 125], "excluded_lines": [], "start_line": 116}, "TestQualityValidator.test_is_meaningful_method": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [129, 130, 131], "excluded_lines": [], "start_line": 127}, "TestQualityValidator.test_is_repetitive_method": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 139, 140, 141], "excluded_lines": [], "start_line": 133}, "TestQualityValidator.test_length_boundaries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [146, 147, 148, 151, 152, 153], "excluded_lines": [], "start_line": 143}, "TestQualityValidator.test_alphanumeric_ratio": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [158, 159, 160, 163, 164, 165], "excluded_lines": [], "start_line": 155}, "": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 20, "percent_covered": 10.0, "percent_covered_display": "10", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 10.0, "percent_statements_covered_display": "10"}, "missing_lines": [12, 15, 28, 31, 32, 36, 46, 56, 66, 76, 86, 96, 106, 116, 127, 133, 143, 155], "excluded_lines": [], "start_line": 1}}, "classes": {"TestValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [17, 23, 24, 25], "excluded_lines": [], "start_line": 12}, "TestQualityValidator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 66, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 66, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34, 38, 39, 41, 43, 44, 48, 49, 51, 53, 54, 58, 59, 61, 63, 64, 68, 69, 71, 73, 74, 78, 79, 81, 83, 84, 88, 89, 91, 93, 94, 98, 99, 101, 103, 104, 108, 109, 111, 113, 114, 118, 119, 120, 122, 124, 125, 129, 130, 131, 136, 139, 140, 141, 146, 147, 148, 151, 152, 153, 158, 159, 160, 163, 164, 165], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [5, 6], "summary": {"covered_lines": 2, "num_statements": 20, "percent_covered": 10.0, "percent_covered_display": "10", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 10.0, "percent_statements_covered_display": "10"}, "missing_lines": [12, 15, 28, 31, 32, 36, 46, 56, 66, 76, 86, 96, 106, 116, 127, 133, 143, 155], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_query_monitoring.py": {"executed_lines": [5, 6, 7], "summary": {"covered_lines": 3, "num_statements": 161, "percent_covered": 1.8633540372670807, "percent_covered_display": "2", "missing_lines": 158, "excluded_lines": 0, "percent_statements_covered": 1.8633540372670807, "percent_statements_covered_display": "2"}, "missing_lines": [21, 24, 26, 28, 29, 30, 31, 32, 34, 36, 38, 39, 41, 42, 43, 44, 46, 48, 50, 51, 53, 55, 57, 59, 61, 63, 66, 67, 69, 70, 72, 74, 77, 78, 80, 83, 86, 87, 89, 91, 93, 94, 95, 97, 100, 101, 102, 103, 105, 107, 108, 109, 111, 113, 114, 115, 117, 119, 121, 123, 125, 126, 128, 130, 133, 134, 136, 137, 139, 141, 142, 144, 145, 146, 148, 150, 151, 152, 153, 155, 156, 157, 159, 161, 163, 165, 167, 169, 170, 172, 174, 175, 176, 177, 178, 179, 182, 185, 186, 188, 190, 192, 194, 195, 196, 198, 200, 202, 204, 206, 208, 210, 211, 213, 214, 216, 218, 219, 221, 223, 225, 227, 229, 232, 235, 237, 239, 241, 243, 244, 249, 250, 252, 253, 258, 261, 263, 264, 265, 267, 268, 270, 272, 273, 274, 277, 278, 281, 284, 286, 288, 290, 292, 294, 296, 297, 299, 300], "excluded_lines": [], "functions": {"TestQueryMetrics.test_initialization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [26, 28, 29, 30, 31, 32], "excluded_lines": [], "start_line": 24}, "TestQueryMetrics.test_add_execution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36, 38, 39, 41, 42, 43, 44], "excluded_lines": [], "start_line": 34}, "TestQueryMetrics.test_avg_time": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [48, 50, 51, 53], "excluded_lines": [], "start_line": 46}, "TestQueryMetrics.test_avg_time_zero_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [57, 59], "excluded_lines": [], "start_line": 55}, "TestQueryMetrics.test_is_potential_n_plus_one": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63, 66, 67, 69, 70], "excluded_lines": [], "start_line": 61}, "TestQueryMetrics.test_is_potential_n_plus_one_same_params": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [74, 77, 78, 80], "excluded_lines": [], "start_line": 72}, "TestQueryMonitor.monitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [89], "excluded_lines": [], "start_line": 87}, "TestQueryMonitor.test_initialization": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [93, 94, 95], "excluded_lines": [], "start_line": 91}, "TestQueryMonitor.test_normalize_query": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [100, 101, 102, 103], "excluded_lines": [], "start_line": 97}, "TestQueryMonitor.test_normalize_query_strings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [107, 108, 109], "excluded_lines": [], "start_line": 105}, "TestQueryMonitor.test_normalize_query_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [113, 114, 115], "excluded_lines": [], "start_line": 111}, "TestQueryMonitor.test_record_query": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [119, 121], "excluded_lines": [], "start_line": 117}, "TestQueryMonitor.test_record_query_disabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [125, 126, 128], "excluded_lines": [], "start_line": 123}, "TestQueryMonitor.test_get_n_plus_one_candidates": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [133, 134, 136, 137], "excluded_lines": [], "start_line": 130}, "TestQueryMonitor.test_get_slowest_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [141, 142, 144, 145, 146], "excluded_lines": [], "start_line": 139}, "TestQueryMonitor.test_get_most_executed_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150, 151, 152, 153, 155, 156, 157], "excluded_lines": [], "start_line": 148}, "TestQueryMonitor.test_reset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [161, 163, 165], "excluded_lines": [], "start_line": 159}, "TestQueryMonitor.test_get_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169, 170, 172, 174, 175, 176, 177, 178, 179], "excluded_lines": [], "start_line": 167}, "TestQueryMonitorStack.stack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [188], "excluded_lines": [], "start_line": 186}, "TestQueryMonitorStack.test_push": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [192, 194, 195, 196], "excluded_lines": [], "start_line": 190}, "TestQueryMonitorStack.test_pop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [200, 202, 204], "excluded_lines": [], "start_line": 198}, "TestQueryMonitorStack.test_increment_query_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [208, 210, 211, 213, 214], "excluded_lines": [], "start_line": 206}, "TestQueryMonitorStack.test_get_current_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [218, 219, 221, 223], "excluded_lines": [], "start_line": 216}, "TestQueryMonitorStack.test_get_current_context_empty": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [227, 229], "excluded_lines": [], "start_line": 225}, "TestTrackQueryContext.test_track_queries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 239], "excluded_lines": [], "start_line": 235}, "TestTrackQueryContext.test_track_queries_above_threshold": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [243, 244, 249, 250, 252, 253], "excluded_lines": [], "start_line": 241}, "TestTrackQueriesDecorator.test_sync_function_decorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [263, 264, 267, 268], "excluded_lines": [], "start_line": 261}, "TestTrackQueriesDecorator.test_sync_function_decorator.sync_function": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [265], "excluded_lines": [], "start_line": 264}, "TestTrackQueriesDecorator.test_async_function_decorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [272, 273, 277, 278], "excluded_lines": [], "start_line": 270}, "TestTrackQueriesDecorator.test_async_function_decorator.async_function": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [274], "excluded_lines": [], "start_line": 273}, "TestModuleFunctions.test_get_query_report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [286, 288, 290], "excluded_lines": [], "start_line": 284}, "TestModuleFunctions.test_enable_disable_monitoring": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [294, 296, 297, 299, 300], "excluded_lines": [], "start_line": 292}, "": {"executed_lines": [5, 6, 7], "summary": {"covered_lines": 3, "num_statements": 41, "percent_covered": 7.317073170731708, "percent_covered_display": "7", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 7.317073170731708, "percent_statements_covered_display": "7"}, "missing_lines": [21, 24, 34, 46, 55, 61, 72, 83, 86, 87, 91, 97, 105, 111, 117, 123, 130, 139, 148, 159, 167, 182, 185, 186, 190, 198, 206, 216, 225, 232, 235, 241, 258, 261, 270, 281, 284, 292], "excluded_lines": [], "start_line": 1}}, "classes": {"TestQueryMetrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [26, 28, 29, 30, 31, 32, 36, 38, 39, 41, 42, 43, 44, 48, 50, 51, 53, 57, 59, 63, 66, 67, 69, 70, 74, 77, 78, 80], "excluded_lines": [], "start_line": 21}, "TestQueryMonitor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [89, 93, 94, 95, 100, 101, 102, 103, 107, 108, 109, 113, 114, 115, 119, 121, 125, 126, 128, 133, 134, 136, 137, 141, 142, 144, 145, 146, 150, 151, 152, 153, 155, 156, 157, 161, 163, 165, 169, 170, 172, 174, 175, 176, 177, 178, 179], "excluded_lines": [], "start_line": 83}, "TestQueryMonitorStack": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [188, 192, 194, 195, 196, 200, 202, 204, 208, 210, 211, 213, 214, 218, 219, 221, 223, 227, 229], "excluded_lines": [], "start_line": 182}, "TestTrackQueryContext": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 239, 243, 244, 249, 250, 252, 253], "excluded_lines": [], "start_line": 232}, "TestTrackQueriesDecorator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [263, 264, 265, 267, 268, 272, 273, 274, 277, 278], "excluded_lines": [], "start_line": 258}, "TestModuleFunctions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [286, 288, 290, 294, 296, 297, 299, 300], "excluded_lines": [], "start_line": 281}, "": {"executed_lines": [5, 6, 7], "summary": {"covered_lines": 3, "num_statements": 41, "percent_covered": 7.317073170731708, "percent_covered_display": "7", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 7.317073170731708, "percent_statements_covered_display": "7"}, "missing_lines": [21, 24, 34, 46, 55, 61, 72, 83, 86, 87, 91, 97, 105, 111, 117, 123, 130, 139, 148, 159, 167, 182, 185, 186, 190, 198, 206, 216, 225, 232, 235, 241, 258, 261, 270, 281, 284, 292], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_query_monitoring_coverage.py": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 17, 20, 27, 28, 29, 30, 32, 33, 35, 37, 45, 46, 48, 49, 51, 53, 60, 63, 66, 68, 70, 77, 78, 79, 80, 82, 84, 86, 87, 95, 96, 97, 99, 101, 103, 111, 113, 115, 117, 124], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestQueryMonitoring.test_get_query_stats": {"executed_lines": [17, 20, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "TestQueryMonitoring.test_get_slow_queries": {"executed_lines": [35, 37, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestQueryMonitoring.test_get_query_stats_empty": {"executed_lines": [51, 53, 60], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestQueryMonitoringModels.test_query_stats_response": {"executed_lines": [68, 70, 77, 78, 79, 80], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "TestQueryMonitoringModels.test_slow_query_response": {"executed_lines": [84, 86, 87, 95, 96, 97], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestQueryMonitoringModels.test_query_stats_response_zero_values": {"executed_lines": [101, 103, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestQueryMonitoringModels.test_query_stats_response_high_cache_hit": {"executed_lines": [115, 117, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 32, 33, 48, 49, 63, 66, 82, 99, 113], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestQueryMonitoring": {"executed_lines": [17, 20, 27, 28, 29, 30, 35, 37, 45, 46, 51, 53, 60], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "TestQueryMonitoringModels": {"executed_lines": [68, 70, 77, 78, 79, 80, 84, 86, 87, 95, 96, 97, 101, 103, 111, 115, 117, 124], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "": {"executed_lines": [5, 6, 7, 8, 11, 14, 15, 32, 33, 48, 49, 63, 66, 82, 99, 113], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_rate_limiter_concurrency.py": {"executed_lines": [1, 2, 3, 4, 7, 8, 15, 16, 19, 20, 21, 23, 24, 25, 28, 32, 33, 42, 45, 48, 49, 52, 53, 57, 58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 75, 77, 78, 79, 82, 83, 85, 86, 89, 94, 96, 97, 98], "summary": {"covered_lines": 49, "num_statements": 54, "percent_covered": 90.74074074074075, "percent_covered_display": "91", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 90.74074074074075, "percent_statements_covered_display": "91"}, "missing_lines": [36, 38, 90, 91, 100], "excluded_lines": [], "functions": {"test_rate_limiter_override_config_no_side_effects": {"executed_lines": [15, 16, 19, 20, 21, 23, 24, 25, 28, 32, 33, 42, 45, 48, 49], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [36, 38], "excluded_lines": [], "start_line": 8}, "test_concurrent_requests_isolation": {"executed_lines": [57, 58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 75, 82, 94, 96, 97, 98], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95"}, "missing_lines": [100], "excluded_lines": [], "start_line": 53}, "test_concurrent_requests_isolation.task1": {"executed_lines": [77, 78, 79], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "test_concurrent_requests_isolation.task2": {"executed_lines": [83, 85, 86, 89], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [90, 91], "excluded_lines": [], "start_line": 82}, "": {"executed_lines": [1, 2, 3, 4, 7, 8, 52, 53], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 7, 8, 15, 16, 19, 20, 21, 23, 24, 25, 28, 32, 33, 42, 45, 48, 49, 52, 53, 57, 58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 75, 77, 78, 79, 82, 83, 85, 86, 89, 94, 96, 97, 98], "summary": {"covered_lines": 49, "num_statements": 54, "percent_covered": 90.74074074074075, "percent_covered_display": "91", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 90.74074074074075, "percent_statements_covered_display": "91"}, "missing_lines": [36, 38, 90, 91, 100], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_rate_limiter_coverage_extended.py": {"executed_lines": [6, 7, 8, 9, 11, 22, 25, 27, 31, 33, 35, 39, 41, 43, 44, 47, 50, 52, 53, 55, 57, 58, 60, 62, 63, 65, 67, 68, 69, 70, 71, 74, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 93, 95, 96, 97, 98, 99, 100, 102, 103, 105, 107, 108, 109, 110, 111, 112, 114, 115, 117, 119, 120, 121, 122, 123, 125, 126, 129, 132, 133, 134, 136, 138, 139, 140, 142, 143, 145, 147, 148, 149, 151, 152, 153, 155, 157, 158, 159, 161, 162, 164, 167, 170, 171, 172, 177, 179, 181, 187, 188, 189, 191, 193, 196, 197, 200, 202, 204, 206, 207, 210, 213, 214, 217, 220, 221, 222, 224, 225, 227, 228, 229, 230, 231, 232, 234, 236, 238, 239, 240, 242, 243, 245, 246, 247, 248, 249, 250, 251, 253, 255, 257, 260, 263, 264, 265, 267, 268, 270, 271, 272, 273, 274, 275, 278, 279, 280, 282, 285, 288, 291, 292, 293, 295, 296, 297, 299, 300, 302, 303, 305, 307, 309, 311, 312, 314, 315, 316, 317, 318, 319, 320, 323, 332, 333, 334, 336, 338, 340, 341, 343, 344, 345, 346, 347, 348, 349, 352, 361, 363, 364, 366, 367, 369, 370, 371, 372, 373, 374, 375, 377, 386, 387, 388, 390, 392, 395, 398, 399, 400, 402, 403, 405, 406, 407, 408, 409, 410, 412, 414, 420, 421, 423, 425, 426, 428, 429, 431, 432, 435, 437, 438, 440, 441, 443, 445], "summary": {"covered_lines": 249, "num_statements": 249, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestRateLimitConfigExtended.test_user_requests_per_minute_config": {"executed_lines": [27, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestRateLimitConfigExtended.test_user_requests_per_hour_config": {"executed_lines": [35, 39], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestRateLimitConfigExtended.test_burst_size_config": {"executed_lines": [43, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestRateLimitStateExtended.test_last_request_initialization": {"executed_lines": [52, 53], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestRateLimitStateExtended.test_tokens_initialization": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestRateLimitStateExtended.test_window_start_initialization": {"executed_lines": [62, 63], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestRateLimitStateExtended.test_reset_window_updates_time": {"executed_lines": [67, 68, 69, 70, 71], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestRateLimiterClientKey.limiter": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestRateLimiterClientKey.test_get_client_key_with_forwarded_header": {"executed_lines": [83, 84, 85, 86, 87, 88, 90, 91], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "TestRateLimiterClientKey.test_get_client_key_without_forwarded_header": {"executed_lines": [95, 96, 97, 98, 99, 100, 102, 103], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestRateLimiterClientKey.test_get_client_key_with_user_id": {"executed_lines": [107, 108, 109, 110, 111, 112, 114, 115], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestRateLimiterClientKey.test_get_client_key_fallback_to_unknown": {"executed_lines": [119, 120, 121, 122, 123, 125, 126], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestRateLimiterUserConfig.limiter": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestRateLimiterUserConfig.test_get_user_config_free_tier": {"executed_lines": [138, 139, 140, 142, 143], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestRateLimiterUserConfig.test_get_user_config_premium_tier": {"executed_lines": [147, 148, 149, 151, 152, 153], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "TestRateLimiterUserConfig.test_get_user_config_with_base_config": {"executed_lines": [157, 158, 159, 161, 162, 164], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestRateLimiterLocalCheck.limiter": {"executed_lines": [172, 177], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "TestRateLimiterLocalCheck.test_check_local_allowed_request": {"executed_lines": [181, 187, 188, 189], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "TestRateLimiterLocalCheck.test_check_local_exceeds_limit": {"executed_lines": [193, 196, 197, 200, 202], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestRateLimiterLocalCheck.test_check_local_window_reset": {"executed_lines": [206, 207, 210, 213, 214], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestRateLimiterStatus.limiter": {"executed_lines": [222], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestRateLimiterStatus.test_get_rate_limit_status_local": {"executed_lines": [227, 228, 229, 230, 231, 232, 234, 236, 238, 239, 240], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "TestRateLimiterStatus.test_get_rate_limit_status_with_user": {"executed_lines": [245, 246, 247, 248, 249, 250, 251, 253, 255, 257], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 243}, "TestRateLimiterRedisCheck.limiter": {"executed_lines": [265], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestRateLimiterRedisCheck.test_check_redis_fallback_on_error": {"executed_lines": [270, 271, 272, 273, 274, 275, 278, 279, 280, 282, 285], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "TestRateLimitMiddlewareDispatch.mock_limiter": {"executed_lines": [293], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestRateLimitMiddlewareDispatch.middleware": {"executed_lines": [297], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 296}, "TestRateLimitMiddlewareDispatch.test_dispatch_excluded_path": {"executed_lines": [302, 303, 305, 307, 309], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestRateLimitMiddlewareDispatch.test_dispatch_endpoint_specific_limits": {"executed_lines": [314, 315, 316, 317, 318, 319, 320, 323, 332, 333, 334, 336, 338], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "TestRateLimitMiddlewareDispatch.test_dispatch_rate_limit_exceeded": {"executed_lines": [343, 344, 345, 346, 347, 348, 349, 352, 361, 363, 364], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "TestRateLimitMiddlewareDispatch.test_dispatch_adds_rate_limit_headers": {"executed_lines": [369, 370, 371, 372, 373, 374, 375, 377, 386, 387, 388, 390, 392], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 367}, "TestRateLimiterEdgeCases.limiter": {"executed_lines": [400], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 399}, "TestRateLimiterEdgeCases.test_check_rate_limit_with_override_config": {"executed_lines": [405, 406, 407, 408, 409, 410, 412, 414, 420, 421], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403}, "TestRateLimiterEdgeCases.test_rate_limiter_initialization_with_redis_url": {"executed_lines": [425, 426], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 423}, "TestRateLimiterEdgeCases.test_rate_limiter_close": {"executed_lines": [431, 432, 435], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429}, "TestRateLimiterEdgeCases.test_rate_limiter_close_with_redis": {"executed_lines": [440, 441, 443, 445], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438}, "": {"executed_lines": [6, 7, 8, 9, 11, 22, 25, 33, 41, 47, 50, 55, 60, 65, 74, 77, 78, 81, 93, 105, 117, 129, 132, 133, 136, 145, 155, 167, 170, 171, 179, 191, 204, 217, 220, 221, 224, 225, 242, 243, 260, 263, 264, 267, 268, 288, 291, 292, 295, 296, 299, 300, 311, 312, 340, 341, 366, 367, 395, 398, 399, 402, 403, 423, 428, 429, 437, 438], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRateLimitConfigExtended": {"executed_lines": [27, 31, 35, 39, 43, 44], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestRateLimitStateExtended": {"executed_lines": [52, 53, 57, 58, 62, 63, 67, 68, 69, 70, 71], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestRateLimiterClientKey": {"executed_lines": [79, 83, 84, 85, 86, 87, 88, 90, 91, 95, 96, 97, 98, 99, 100, 102, 103, 107, 108, 109, 110, 111, 112, 114, 115, 119, 120, 121, 122, 123, 125, 126], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestRateLimiterUserConfig": {"executed_lines": [134, 138, 139, 140, 142, 143, 147, 148, 149, 151, 152, 153, 157, 158, 159, 161, 162, 164], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "TestRateLimiterLocalCheck": {"executed_lines": [172, 177, 181, 187, 188, 189, 193, 196, 197, 200, 202, 206, 207, 210, 213, 214], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "TestRateLimiterStatus": {"executed_lines": [222, 227, 228, 229, 230, 231, 232, 234, 236, 238, 239, 240, 245, 246, 247, 248, 249, 250, 251, 253, 255, 257], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestRateLimiterRedisCheck": {"executed_lines": [265, 270, 271, 272, 273, 274, 275, 278, 279, 280, 282, 285], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestRateLimitMiddlewareDispatch": {"executed_lines": [293, 297, 302, 303, 305, 307, 309, 314, 315, 316, 317, 318, 319, 320, 323, 332, 333, 334, 336, 338, 343, 344, 345, 346, 347, 348, 349, 352, 361, 363, 364, 369, 370, 371, 372, 373, 374, 375, 377, 386, 387, 388, 390, 392], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288}, "TestRateLimiterEdgeCases": {"executed_lines": [400, 405, 406, 407, 408, 409, 410, 412, 414, 420, 421, 425, 426, 431, 432, 435, 440, 441, 443, 445], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 395}, "": {"executed_lines": [6, 7, 8, 9, 11, 22, 25, 33, 41, 47, 50, 55, 60, 65, 74, 77, 78, 81, 93, 105, 117, 129, 132, 133, 136, 145, 155, 167, 170, 171, 179, 191, 204, 217, 220, 221, 224, 225, 242, 243, 260, 263, 264, 267, 268, 288, 291, 292, 295, 296, 299, 300, 311, 312, 340, 341, 366, 367, 395, 398, 399, 402, 403, 423, 428, 429, 437, 438], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_rate_limiter_service.py": {"executed_lines": [5, 6, 7, 8, 19, 20, 22, 23, 24, 26, 28, 29, 30, 31, 34, 35, 37, 38, 39, 41, 43, 44, 45, 46, 49, 50, 51, 52, 54, 56, 58, 60, 62, 64, 67, 68, 70, 71, 72, 73, 74, 77, 78, 80, 81, 83, 85, 87, 89], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestRateLimitConfig.test_rate_limit_config_init": {"executed_lines": [22, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestRateLimitConfig.test_rate_limit_config_defaults": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestRateLimitState.test_rate_limit_state_init": {"executed_lines": [37, 38, 39], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestRateLimitState.test_rate_limit_state_reset": {"executed_lines": [43, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestRateLimiter.limiter": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestRateLimiter.test_limiter_init": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestRateLimiter.test_limiter_has_config": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestRateLimiter.test_limiter_has_check_rate_limit": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "TestRateLimitMiddleware.test_middleware_init": {"executed_lines": [70, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestModuleFunctions.test_create_global_limiter": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestModuleFunctions.test_get_rate_limiter": {"executed_lines": [85], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestModuleFunctions.test_check_rate_limit_function": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [5, 6, 7, 8, 19, 20, 26, 34, 35, 41, 49, 50, 51, 54, 58, 62, 67, 68, 77, 78, 83, 87], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRateLimitConfig": {"executed_lines": [22, 23, 24, 28, 29, 30, 31], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestRateLimitState": {"executed_lines": [37, 38, 39, 43, 44, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestRateLimiter": {"executed_lines": [52, 56, 60, 64], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestRateLimitMiddleware": {"executed_lines": [70, 71, 72, 73, 74], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestModuleFunctions": {"executed_lines": [80, 81, 85, 89], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [5, 6, 7, 8, 19, 20, 26, 34, 35, 41, 49, 50, 51, 54, 58, 62, 67, 68, 77, 78, 83, 87], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_redis_module_coverage.py": {"executed_lines": [7, 8, 9, 10, 13, 16, 18, 20, 22, 23, 24, 25, 27, 29, 30, 31, 33, 34, 36, 38, 40, 41, 42, 45, 48, 49, 51, 53, 55, 56, 57, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 80, 81, 82, 83, 84, 86, 87, 88, 90, 91, 93, 94, 96, 97, 99, 100, 102, 103, 105, 106, 108, 109, 111, 113, 114, 115, 117, 119, 121, 122, 124, 126, 127, 129, 130, 131, 132, 134, 136, 138, 139, 141, 143, 144, 145, 147, 149, 150, 152, 154, 155, 157, 159, 160, 162, 164, 165, 167, 168, 169, 171, 173, 175, 176, 178, 180, 181, 183, 185, 187, 188, 190, 191, 193, 194, 196, 197, 198, 200, 202, 204, 205, 207, 209, 210, 212, 213, 214, 216, 218, 220, 221, 223, 225, 226, 228, 229, 230, 232, 234, 235, 237, 238, 240, 242, 243, 245, 246, 247, 249, 251, 253, 254, 256, 258, 259, 261, 262, 263, 265, 267, 269, 270, 272, 274, 275, 277, 279, 281, 282, 284, 286, 287, 289, 290, 291, 293, 295, 297, 298, 300, 302, 303, 305, 307, 309, 310, 312, 314, 315, 317, 318, 319, 321, 323, 326, 329, 330, 332, 334, 336, 337, 338, 340, 341, 343, 345, 346, 348, 349, 351, 353, 354, 356, 358, 360, 361, 363, 364, 366, 368, 369, 371, 373, 375, 377, 379, 381, 382, 384, 386, 388, 390, 391, 394, 395, 397, 399, 401, 402, 404, 406, 408, 410, 411, 413, 415, 417, 418, 420, 422, 424, 426, 428, 430, 431, 433, 435, 437, 439, 440, 442, 444, 446, 447, 449, 451, 453, 455, 457, 459, 460, 462, 464, 466, 468, 469, 471, 473, 476, 479, 480, 482, 484, 486, 487, 489, 490, 492, 494, 495, 497, 498, 500, 502, 503, 505, 507, 509, 510, 512, 513, 515, 517, 518, 520, 522, 523, 525, 527, 529, 531, 533, 535, 536, 538, 540, 541, 543, 545, 547, 549, 551, 554, 557, 558, 560, 562, 564, 565, 566, 567, 569, 571, 573, 574, 576, 578, 580, 581, 582, 583, 584, 586, 588, 590, 591, 593, 595, 597, 598, 599, 600, 602, 604, 606, 607, 609, 611, 612, 613, 614, 617], "summary": {"covered_lines": 367, "num_statements": 368, "percent_covered": 99.72826086956522, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.72826086956522, "percent_statements_covered_display": "99"}, "missing_lines": [618], "excluded_lines": [], "functions": {"TestRedisConfig.test_redis_config_defaults": {"executed_lines": [18, 20, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "TestRedisConfig.test_redis_config_from_env": {"executed_lines": [29, 30, 31, 33, 34, 36, 38, 40, 41, 42], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "TestRedisClient.test_redis_client_init": {"executed_lines": [51, 53, 55, 56, 57], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestRedisClient.test_redis_client_with_config": {"executed_lines": [62, 64, 65, 67, 69], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestRedisClient.test_redis_client_connect_success": {"executed_lines": [74, 76, 77, 78, 80, 81, 82, 83, 84, 86, 87, 88, 90, 91], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "TestRedisClient.test_redis_client_connect_failure": {"executed_lines": [96, 97, 99, 100, 102, 103, 105, 106], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestRedisClient.test_redis_client_already_connected": {"executed_lines": [111, 113, 114, 115, 117, 119], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "TestRedisClient.test_redis_client_disconnect": {"executed_lines": [124, 126, 127, 129, 130, 131, 132, 134, 136], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestRedisClient.test_redis_client_is_connected": {"executed_lines": [141, 143, 144, 145, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "TestRedisClient.test_redis_client_is_connected_false": {"executed_lines": [152, 154, 155, 157], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestRedisClient.test_redis_client_get_success": {"executed_lines": [162, 164, 165, 167, 168, 169, 171, 173], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 160}, "TestRedisClient.test_redis_client_get_not_connected": {"executed_lines": [178, 180, 181, 183, 185], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestRedisClient.test_redis_client_get_error": {"executed_lines": [190, 191, 193, 194, 196, 197, 198, 200, 202], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestRedisClient.test_redis_client_set_success": {"executed_lines": [207, 209, 210, 212, 213, 214, 216, 218], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "TestRedisClient.test_redis_client_set_with_dict": {"executed_lines": [223, 225, 226, 228, 229, 230, 232, 234, 235], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestRedisClient.test_redis_client_set_with_ttl": {"executed_lines": [240, 242, 243, 245, 246, 247, 249, 251], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestRedisClient.test_redis_client_delete_success": {"executed_lines": [256, 258, 259, 261, 262, 263, 265, 267], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestRedisClient.test_redis_client_delete_not_connected": {"executed_lines": [272, 274, 275, 277, 279], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "TestRedisClient.test_redis_client_exists_success": {"executed_lines": [284, 286, 287, 289, 290, 291, 293, 295], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestRedisClient.test_redis_client_exists_not_connected": {"executed_lines": [300, 302, 303, 305, 307], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "TestRedisClient.test_redis_client_expire_success": {"executed_lines": [312, 314, 315, 317, 318, 319, 321, 323], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestJobQueue.test_job_queue_init": {"executed_lines": [332, 334, 336, 337, 338], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestJobQueue.test_job_queue_connect": {"executed_lines": [343, 345, 346, 348, 349, 351], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "TestJobQueue.test_job_queue_disconnect": {"executed_lines": [356, 358, 360, 361], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestJobQueue.test_job_queue_enqueue": {"executed_lines": [366], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 364}, "TestJobQueue.test_job_queue_enqueue_not_connected": {"executed_lines": [371, 373, 375, 377, 379], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestJobQueue.test_job_queue_dequeue": {"executed_lines": [384, 386, 388, 390, 391, 394, 395, 397, 399], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 382}, "TestJobQueue.test_job_queue_dequeue_empty": {"executed_lines": [404, 406, 408, 410, 411, 413, 415], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 402}, "TestJobQueue.test_job_queue_dequeue_not_connected": {"executed_lines": [420, 422, 424, 426, 428], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418}, "TestJobQueue.test_job_queue_complete_job": {"executed_lines": [433, 435, 437, 439, 440, 442, 444], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 431}, "TestJobQueue.test_job_queue_complete_job_not_connected": {"executed_lines": [449, 451, 453, 455, 457], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 447}, "TestJobQueue.test_job_queue_get_queue_size": {"executed_lines": [462, 464, 466, 468, 469, 471, 473], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460}, "TestRateLimiter.test_rate_limiter_init": {"executed_lines": [482, 484, 486, 487], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480}, "TestRateLimiter.test_rate_limiter_connect": {"executed_lines": [492, 494, 495, 497, 498, 500], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "TestRateLimiter.test_rate_limiter_disconnect": {"executed_lines": [505, 507, 509, 510], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 503}, "TestRateLimiter.test_rate_limiter_check_allowed": {"executed_lines": [515], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 513}, "TestRateLimiter.test_rate_limiter_check_not_allowed": {"executed_lines": [520], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 518}, "TestRateLimiter.test_rate_limiter_check_not_connected": {"executed_lines": [525, 527, 529, 531, 533], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523}, "TestRateLimiter.test_rate_limiter_get_remaining": {"executed_lines": [538], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536}, "TestRateLimiter.test_rate_limiter_get_remaining_not_connected": {"executed_lines": [543, 545, 547, 549, 551], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541}, "TestRedisModuleFunctions.test_get_redis_client": {"executed_lines": [560, 562, 564, 565, 566, 567, 569, 571], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 558}, "TestRedisModuleFunctions.test_get_job_queue": {"executed_lines": [576, 578, 580, 581, 582, 583, 584, 586, 588], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574}, "TestRedisModuleFunctions.test_get_rate_limiter": {"executed_lines": [593, 595, 597, 598, 599, 600, 602, 604], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591}, "TestRedisModuleFunctions.test_close_redis": {"executed_lines": [609, 611, 612, 613, 614], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 607}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 27, 45, 48, 49, 59, 60, 71, 72, 93, 94, 108, 109, 121, 122, 138, 139, 149, 150, 159, 160, 175, 176, 187, 188, 204, 205, 220, 221, 237, 238, 253, 254, 269, 270, 281, 282, 297, 298, 309, 310, 326, 329, 330, 340, 341, 353, 354, 363, 364, 368, 369, 381, 382, 401, 402, 417, 418, 430, 431, 446, 447, 459, 460, 476, 479, 480, 489, 490, 502, 503, 512, 513, 517, 518, 522, 523, 535, 536, 540, 541, 554, 557, 558, 573, 574, 590, 591, 606, 607, 617], "summary": {"covered_lines": 96, "num_statements": 97, "percent_covered": 98.96907216494846, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.96907216494846, "percent_statements_covered_display": "99"}, "missing_lines": [618], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRedisConfig": {"executed_lines": [18, 20, 22, 23, 24, 25, 29, 30, 31, 33, 34, 36, 38, 40, 41, 42], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestRedisClient": {"executed_lines": [51, 53, 55, 56, 57, 62, 64, 65, 67, 69, 74, 76, 77, 78, 80, 81, 82, 83, 84, 86, 87, 88, 90, 91, 96, 97, 99, 100, 102, 103, 105, 106, 111, 113, 114, 115, 117, 119, 124, 126, 127, 129, 130, 131, 132, 134, 136, 141, 143, 144, 145, 147, 152, 154, 155, 157, 162, 164, 165, 167, 168, 169, 171, 173, 178, 180, 181, 183, 185, 190, 191, 193, 194, 196, 197, 198, 200, 202, 207, 209, 210, 212, 213, 214, 216, 218, 223, 225, 226, 228, 229, 230, 232, 234, 235, 240, 242, 243, 245, 246, 247, 249, 251, 256, 258, 259, 261, 262, 263, 265, 267, 272, 274, 275, 277, 279, 284, 286, 287, 289, 290, 291, 293, 295, 300, 302, 303, 305, 307, 312, 314, 315, 317, 318, 319, 321, 323], "summary": {"covered_lines": 137, "num_statements": 137, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestJobQueue": {"executed_lines": [332, 334, 336, 337, 338, 343, 345, 346, 348, 349, 351, 356, 358, 360, 361, 366, 371, 373, 375, 377, 379, 384, 386, 388, 390, 391, 394, 395, 397, 399, 404, 406, 408, 410, 411, 413, 415, 420, 422, 424, 426, 428, 433, 435, 437, 439, 440, 442, 444, 449, 451, 453, 455, 457, 462, 464, 466, 468, 469, 471, 473], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326}, "TestRateLimiter": {"executed_lines": [482, 484, 486, 487, 492, 494, 495, 497, 498, 500, 505, 507, 509, 510, 515, 520, 525, 527, 529, 531, 533, 538, 543, 545, 547, 549, 551], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476}, "TestRedisModuleFunctions": {"executed_lines": [560, 562, 564, 565, 566, 567, 569, 571, 576, 578, 580, 581, 582, 583, 584, 586, 588, 593, 595, 597, 598, 599, 600, 602, 604, 609, 611, 612, 613, 614], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 554}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 27, 45, 48, 49, 59, 60, 71, 72, 93, 94, 108, 109, 121, 122, 138, 139, 149, 150, 159, 160, 175, 176, 187, 188, 204, 205, 220, 221, 237, 238, 253, 254, 269, 270, 281, 282, 297, 298, 309, 310, 326, 329, 330, 340, 341, 353, 354, 363, 364, 368, 369, 381, 382, 401, 402, 417, 418, 430, 431, 446, 447, 459, 460, 476, 479, 480, 489, 490, 502, 503, 512, 513, 517, 518, 522, 523, 535, 536, 540, 541, 554, 557, 558, 573, 574, 590, 591, 606, 607, 617], "summary": {"covered_lines": 96, "num_statements": 97, "percent_covered": 98.96907216494846, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.96907216494846, "percent_statements_covered_display": "99"}, "missing_lines": [618], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_report_exporter_service.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 11, 12, 13, 19, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 51, 65, 67, 68, 69, 71, 72, 74, 75, 77, 78, 79, 81, 82, 84, 85, 86, 87, 89, 90, 92, 93, 94, 96, 97, 98, 100, 101, 103, 104, 105, 106, 108, 109, 110, 111], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"mock_report": {"executed_lines": [13, 19, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 51, 65], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "exporter": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "test_report_exporter_init": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "test_export_to_json": {"executed_lines": [75, 77, 78, 79], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "test_export_to_html": {"executed_lines": [82, 84, 85, 86, 87], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "test_export_to_csv": {"executed_lines": [90, 92, 93, 94], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "test_create_shareable_link": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "test_generate_download_package": {"executed_lines": [101, 103, 104, 105, 106], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "test_escape_report_data": {"executed_lines": [109, 110, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 108}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 11, 12, 67, 68, 71, 74, 81, 89, 96, 100, 108], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 6, 11, 12, 13, 19, 30, 31, 32, 33, 34, 36, 37, 38, 40, 42, 51, 65, 67, 68, 69, 71, 72, 74, 75, 77, 78, 79, 81, 82, 84, 85, 86, 87, 89, 90, 92, 93, 94, 96, 97, 98, 100, 101, 103, 104, 105, 106, 108, 109, 110, 111], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_report_generator.py": {"executed_lines": [1, 2, 5, 10, 13, 14, 15, 16, 17, 19, 20, 21, 22, 25, 26, 27, 29, 30, 31, 36, 40, 41, 44, 45, 47, 48, 51, 56, 57, 60, 61, 62, 63, 64, 69, 70, 73, 74, 75, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 97, 98, 99, 100, 101, 105, 107, 108, 111, 112, 113, 114, 115, 119, 122], "summary": {"covered_lines": 65, "num_statements": 66, "percent_covered": 98.48484848484848, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.48484848484848, "percent_statements_covered_display": "98"}, "missing_lines": [123], "excluded_lines": [], "functions": {"TestConversionReportGenerator.setUp": {"executed_lines": [15, 16, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestConversionReportGenerator.test_generate_summary_report_success": {"executed_lines": [20, 21, 22, 25, 26, 27], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestConversionReportGenerator.test_generate_summary_report_failure": {"executed_lines": [30, 31, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestConversionReportGenerator.test_generate_feature_analysis": {"executed_lines": [41, 44, 45, 47, 48, 51], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestConversionReportGenerator.test_generate_assumptions_report": {"executed_lines": [57, 60, 61, 62, 63, 64], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "TestConversionReportGenerator.test_generate_developer_log": {"executed_lines": [70, 73, 74, 75], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestConversionReportGenerator.test_create_interactive_report_success": {"executed_lines": [83, 84, 85, 86, 87, 88, 89, 90, 91, 95], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestConversionReportGenerator.test_create_interactive_report_failure": {"executed_lines": [98, 99, 100, 101, 105], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestConversionReportGenerator.test_create_full_conversion_report_prd_style": {"executed_lines": [108, 111, 112, 113, 114, 115, 119], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "": {"executed_lines": [1, 2, 5, 10, 13, 14, 19, 29, 40, 56, 69, 82, 97, 107, 122], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94"}, "missing_lines": [123], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionReportGenerator": {"executed_lines": [15, 16, 17, 20, 21, 22, 25, 26, 27, 30, 31, 36, 41, 44, 45, 47, 48, 51, 57, 60, 61, 62, 63, 64, 70, 73, 74, 75, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 98, 99, 100, 101, 105, 108, 111, 112, 113, 114, 115, 119], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [1, 2, 5, 10, 13, 14, 19, 29, 40, 56, 69, 82, 97, 107, 122], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94"}, "missing_lines": [123], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_report_models_service.py": {"executed_lines": [7, 8, 23, 24, 26, 31, 32, 35, 36, 38, 44, 47, 48, 50, 56, 59, 60, 62, 67, 70, 71, 73, 79, 82, 83, 85, 90, 93, 94, 96, 101, 104, 105, 107, 112, 115, 116, 118, 123, 126, 127, 129, 134, 137, 138, 140, 147], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestModConversionStatus.test_mod_conversion_status_type": {"executed_lines": [26, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestSmartAssumption.test_smart_assumption_type": {"executed_lines": [38, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestSummaryReport.test_summary_report_type": {"executed_lines": [50, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestFeatureConversionDetail.test_feature_conversion_detail_type": {"executed_lines": [62, 67], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestFeatureAnalysis.test_feature_analysis_type": {"executed_lines": [73, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestAssumptionDetail.test_assumption_detail_type": {"executed_lines": [85, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestAssumptionsReport.test_assumptions_report_type": {"executed_lines": [96, 101], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestLogEntry.test_log_entry_type": {"executed_lines": [107, 112], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestDeveloperLog.test_developer_log_type": {"executed_lines": [118, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestInteractiveReport.test_interactive_report_type": {"executed_lines": [129, 134], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestFullConversionReport.test_full_conversion_report_type": {"executed_lines": [140, 147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "": {"executed_lines": [7, 8, 23, 24, 35, 36, 47, 48, 59, 60, 70, 71, 82, 83, 93, 94, 104, 105, 115, 116, 126, 127, 137, 138], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestModConversionStatus": {"executed_lines": [26, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestSmartAssumption": {"executed_lines": [38, 44], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestSummaryReport": {"executed_lines": [50, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestFeatureConversionDetail": {"executed_lines": [62, 67], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "TestFeatureAnalysis": {"executed_lines": [73, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestAssumptionDetail": {"executed_lines": [85, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestAssumptionsReport": {"executed_lines": [96, 101], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestLogEntry": {"executed_lines": [107, 112], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestDeveloperLog": {"executed_lines": [118, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestInteractiveReport": {"executed_lines": [129, 134], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "TestFullConversionReport": {"executed_lines": [140, 147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "": {"executed_lines": [7, 8, 23, 24, 35, 36, 47, 48, 59, 60, 70, 71, 82, 83, 93, 94, 104, 105, 115, 116, 126, 127, 137, 138], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_resource_allocator.py": {"executed_lines": [11, 12, 13, 14, 15, 17, 19, 34, 35, 37, 38, 39, 42, 43, 45, 51, 52, 54, 65, 68, 70, 71, 72, 73, 76, 79, 81, 82, 83, 84, 86, 88, 89, 90, 91, 94, 97, 99, 106, 107, 108, 109, 110, 111, 113, 115, 123, 125, 127, 135, 136, 138, 140, 147, 150, 153, 155, 163, 164, 165, 166, 167, 168, 170, 172, 180, 182, 185, 188, 190, 201, 202, 203, 204, 205, 207, 209, 219, 225, 226, 227, 228, 230, 232, 242, 248, 250, 252, 254, 264, 270, 272, 274, 285, 291, 293, 295, 306, 312, 314, 316, 327, 333, 334, 335, 337, 339, 348, 351, 354, 356, 365, 366, 367, 368, 371, 374, 376, 387, 388, 389, 391, 393, 402, 403, 404, 407, 410, 412, 413, 414, 415, 416, 417, 419, 421, 422, 423, 424, 425, 428, 431, 432, 434, 443, 444, 446, 447, 448, 449, 451, 452, 454, 463, 464, 466, 467, 469, 477, 478, 479, 481, 482, 484, 485, 487, 488, 490, 494, 500, 501, 502, 503, 505, 506, 509, 516, 524, 529, 530, 531, 533, 534, 537, 544, 552, 554, 559, 561, 563, 564, 567, 575, 585, 592, 597, 598, 600, 601, 604, 613, 620, 626, 628, 629, 632, 639, 648, 654, 662, 667, 669, 670, 674, 676, 677, 679, 680, 683, 691, 697, 699, 700, 702, 703, 706, 714, 715, 717, 720, 721, 723, 724, 726, 727, 729, 730, 732, 733, 735, 744, 745, 748, 749, 751, 752, 754, 762, 764, 765, 767, 768, 770, 778, 780, 781, 783, 784, 786, 793, 795, 796, 797, 798, 800, 801, 805, 810, 817, 818, 821, 830, 831, 833, 834, 837, 838, 840, 842, 843, 844, 845, 847, 848, 850, 857, 865, 867, 868, 869, 870, 871, 874, 877, 879, 880, 881, 882, 884, 886, 887, 888, 889, 892, 895, 896, 898, 904, 911, 912, 914, 915, 917, 926, 931, 932, 935, 940, 941, 944, 949, 950, 954, 959, 960, 962, 963, 965, 973, 975, 981, 982, 984, 985, 987, 989, 991, 992, 994, 998], "summary": {"covered_lines": 340, "num_statements": 340, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"clean_allocator": {"executed_lines": [37, 38, 39], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "allocator": {"executed_lines": [45], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "sample_request": {"executed_lines": [54], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestResourceType.test_resource_types": {"executed_lines": [70, 71, 72, 73], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestAllocationStrategy.test_all_strategies_exist": {"executed_lines": [81, 82, 83, 84], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "TestAllocationStrategy.test_strategy_values": {"executed_lines": [88, 89, 90, 91], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestResourcePool.test_pool_creation": {"executed_lines": [99, 106, 107, 108, 109, 110, 111], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestResourcePool.test_pool_utilization_calculation": {"executed_lines": [115, 123], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestResourcePool.test_pool_full_utilization": {"executed_lines": [127, 135, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestResourcePool.test_pool_zero_capacity": {"executed_lines": [140, 147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 138}, "TestResourceAllocation.test_allocation_creation": {"executed_lines": [155, 163, 164, 165, 166, 167, 168], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestResourceAllocation.test_allocation_release": {"executed_lines": [172, 180, 182], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 170}, "TestWorkerNode.test_node_creation": {"executed_lines": [190, 201, 202, 203, 204, 205], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestWorkerNode.test_node_allocate_resources_success": {"executed_lines": [209, 219, 225, 226, 227, 228], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207}, "TestWorkerNode.test_node_allocate_resources_insufficient_gpu": {"executed_lines": [232, 242, 248, 250], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 230}, "TestWorkerNode.test_node_allocate_resources_insufficient_memory": {"executed_lines": [254, 264, 270], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "TestWorkerNode.test_node_allocate_resources_unhealthy": {"executed_lines": [274, 285, 291], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestWorkerNode.test_node_allocate_resources_high_load": {"executed_lines": [295, 306, 312], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "TestWorkerNode.test_node_release_resources": {"executed_lines": [316, 327, 333, 334, 335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 314}, "TestWorkerNode.test_node_effective_gpu_memory": {"executed_lines": [339, 348], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "TestResourceAllocationRequest.test_request_creation": {"executed_lines": [356, 365, 366, 367, 368], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestResourceAllocationResult.test_result_success": {"executed_lines": [376, 387, 388, 389], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 374}, "TestResourceAllocationResult.test_result_failure": {"executed_lines": [393, 402, 403, 404], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391}, "TestResourceAllocatorStats.test_stats_to_dict": {"executed_lines": [412, 413, 414, 415, 416, 417, 419, 421, 422, 423, 424, 425], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 410}, "TestResourceAllocator.test_register_node": {"executed_lines": [434, 443, 444, 446, 447, 448, 449], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "TestResourceAllocator.test_register_node_with_mode_affinity": {"executed_lines": [454, 463, 464], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 452}, "TestResourceAllocator.test_unregister_node": {"executed_lines": [469, 477, 478, 479], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 467}, "TestResourceAllocator.test_unregister_node_not_found": {"executed_lines": [484, 485], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 482}, "TestResourceAllocator.test_update_node_status": {"executed_lines": [490, 494, 500, 501, 502, 503], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488}, "TestResourceAllocator.test_allocate_round_robin": {"executed_lines": [509, 516, 524, 529, 530, 531], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 506}, "TestResourceAllocator.test_allocate_capacity_based": {"executed_lines": [537, 544, 552, 554, 559, 561], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534}, "TestResourceAllocator.test_allocate_mode_based": {"executed_lines": [567, 575, 585, 592, 597, 598], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 564}, "TestResourceAllocator.test_allocate_mode_based_fallback": {"executed_lines": [604, 613, 620, 626], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 601}, "TestResourceAllocator.test_allocate_priority_based": {"executed_lines": [632, 639, 648, 654, 662, 667], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 629}, "TestResourceAllocator.test_allocate_no_nodes_available": {"executed_lines": [674, 676, 677], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670}, "TestResourceAllocator.test_allocate_insufficient_resources": {"executed_lines": [683, 691, 697, 699, 700], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 680}, "TestResourceAllocator.test_release_allocation": {"executed_lines": [706, 714, 715, 717, 720, 721, 723, 724], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 703}, "TestResourceAllocator.test_release_allocation_not_found": {"executed_lines": [729, 730], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 727}, "TestResourceAllocator.test_release_job_allocations": {"executed_lines": [735, 744, 745, 748, 749], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 733}, "TestResourceAllocator.test_get_node_allocations": {"executed_lines": [754, 762, 764, 765], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 752}, "TestResourceAllocator.test_get_job_allocations": {"executed_lines": [770, 778, 780, 781], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 768}, "TestResourceAllocator.test_create_resource_pool": {"executed_lines": [786, 793, 795, 796, 797, 798], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 784}, "TestResourceAllocator.test_process_wait_queue": {"executed_lines": [805, 810, 817, 818, 821, 830, 831], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 801}, "TestResourceAllocator.test_get_stats": {"executed_lines": [837, 838, 840, 842, 843, 844, 845], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 834}, "TestResourceAllocator.test_get_available_resources": {"executed_lines": [850, 857, 865, 867, 868, 869, 870, 871], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 848}, "TestGetResourceAllocator.test_get_allocator_returns_instance": {"executed_lines": [879, 880, 881, 882], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 877}, "TestGetResourceAllocator.test_get_allocator_same_instance": {"executed_lines": [886, 887, 888, 889], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 884}, "TestEdgeCases.test_allocate_zero_gpu_requirement": {"executed_lines": [898, 904, 911, 912], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 896}, "TestEdgeCases.test_multiple_allocations_same_node": {"executed_lines": [917, 926, 931, 932, 935, 940, 941, 944, 949, 950, 954, 959, 960], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 915}, "TestEdgeCases.test_allocate_with_unhealthy_node": {"executed_lines": [965, 973, 975, 981, 982], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 963}, "TestEdgeCases.test_allocator_default_strategy": {"executed_lines": [987, 989], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 985}, "TestEdgeCases.test_update_nonexistent_node_status": {"executed_lines": [994, 998], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 992}, "": {"executed_lines": [11, 12, 13, 14, 15, 17, 19, 34, 35, 42, 43, 51, 52, 65, 68, 76, 79, 86, 94, 97, 113, 125, 138, 150, 153, 170, 185, 188, 207, 230, 252, 272, 293, 314, 337, 351, 354, 371, 374, 391, 407, 410, 428, 431, 432, 451, 452, 466, 467, 481, 482, 487, 488, 505, 506, 533, 534, 563, 564, 600, 601, 628, 629, 669, 670, 679, 680, 702, 703, 726, 727, 732, 733, 751, 752, 767, 768, 783, 784, 800, 801, 833, 834, 847, 848, 874, 877, 884, 892, 895, 896, 914, 915, 962, 963, 984, 985, 991, 992], "summary": {"covered_lines": 99, "num_statements": 99, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestResourceType": {"executed_lines": [70, 71, 72, 73], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestAllocationStrategy": {"executed_lines": [81, 82, 83, 84, 88, 89, 90, 91], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestResourcePool": {"executed_lines": [99, 106, 107, 108, 109, 110, 111, 115, 123, 127, 135, 136, 140, 147], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestResourceAllocation": {"executed_lines": [155, 163, 164, 165, 166, 167, 168, 172, 180, 182], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestWorkerNode": {"executed_lines": [190, 201, 202, 203, 204, 205, 209, 219, 225, 226, 227, 228, 232, 242, 248, 250, 254, 264, 270, 274, 285, 291, 295, 306, 312, 316, 327, 333, 334, 335, 339, 348], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 185}, "TestResourceAllocationRequest": {"executed_lines": [356, 365, 366, 367, 368], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestResourceAllocationResult": {"executed_lines": [376, 387, 388, 389, 393, 402, 403, 404], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371}, "TestResourceAllocatorStats": {"executed_lines": [412, 413, 414, 415, 416, 417, 419, 421, 422, 423, 424, 425], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 407}, "TestResourceAllocator": {"executed_lines": [434, 443, 444, 446, 447, 448, 449, 454, 463, 464, 469, 477, 478, 479, 484, 485, 490, 494, 500, 501, 502, 503, 509, 516, 524, 529, 530, 531, 537, 544, 552, 554, 559, 561, 567, 575, 585, 592, 597, 598, 604, 613, 620, 626, 632, 639, 648, 654, 662, 667, 674, 676, 677, 683, 691, 697, 699, 700, 706, 714, 715, 717, 720, 721, 723, 724, 729, 730, 735, 744, 745, 748, 749, 754, 762, 764, 765, 770, 778, 780, 781, 786, 793, 795, 796, 797, 798, 805, 810, 817, 818, 821, 830, 831, 837, 838, 840, 842, 843, 844, 845, 850, 857, 865, 867, 868, 869, 870, 871], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 428}, "TestGetResourceAllocator": {"executed_lines": [879, 880, 881, 882, 886, 887, 888, 889], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 874}, "TestEdgeCases": {"executed_lines": [898, 904, 911, 912, 917, 926, 931, 932, 935, 940, 941, 944, 949, 950, 954, 959, 960, 965, 973, 975, 981, 982, 987, 989, 994, 998], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 892}, "": {"executed_lines": [11, 12, 13, 14, 15, 17, 19, 34, 35, 37, 38, 39, 42, 43, 45, 51, 52, 54, 65, 68, 76, 79, 86, 94, 97, 113, 125, 138, 150, 153, 170, 185, 188, 207, 230, 252, 272, 293, 314, 337, 351, 354, 371, 374, 391, 407, 410, 428, 431, 432, 451, 452, 466, 467, 481, 482, 487, 488, 505, 506, 533, 534, 563, 564, 600, 601, 628, 629, 669, 670, 679, 680, 702, 703, 726, 727, 732, 733, 751, 752, 767, 768, 783, 784, 800, 801, 833, 834, 847, 848, 874, 877, 884, 892, 895, 896, 914, 915, 962, 963, 984, 985, 991, 992], "summary": {"covered_lines": 104, "num_statements": 104, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_result_storage.py": {"executed_lines": [14, 15, 16, 17, 18, 19, 27, 28, 30, 31, 32, 33, 34, 37, 38, 40, 41, 45, 47, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 68, 71, 73, 74, 76, 80, 82, 84, 85, 86, 87, 89, 91, 92, 96, 98, 100, 101, 103, 105, 107, 108, 109, 117, 120, 121, 123, 125, 126, 127, 129, 137, 138, 141, 142, 143, 146, 147, 148, 150, 151, 153, 155, 163, 164, 165, 167, 168, 170, 172, 180, 182, 183, 185, 187, 196, 197, 199, 200, 202, 204, 205, 207, 209, 211, 213, 221, 222, 223, 224, 225, 233, 236, 237, 239, 241, 243, 245, 246, 248, 249, 250, 251, 253, 254, 255, 259, 260, 262, 264, 265, 266, 267, 268, 269, 271, 272, 274, 275, 277, 278, 279, 283, 284, 286, 288, 289, 290, 292, 293, 295, 297, 298, 299, 300, 301, 303, 305, 306, 308, 309, 311, 312, 313, 314, 316, 317, 318, 319, 320, 321, 323, 325, 333, 336, 337, 339, 340, 341, 342, 344, 346, 348, 349, 351, 352, 354, 355, 357, 358, 359, 361, 363, 371, 374, 375, 377, 378, 379, 380, 381, 383, 384, 386, 388, 389, 391, 392, 394, 397, 398, 400, 401, 403, 404, 405, 406, 407, 409, 410, 412, 414, 415, 416, 417, 419, 420, 422, 423, 425, 426, 427, 428, 429, 431, 432, 434, 437, 438, 440, 441, 443, 444, 446, 447, 448, 449, 450, 452, 453, 455, 457, 458, 460, 461, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 479, 481, 482, 484, 486, 487, 488, 489, 490, 498, 501, 503, 505, 506, 507, 508, 509, 511, 513, 515, 516, 518, 520, 521, 522, 524, 526, 528, 529, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 558, 561, 563, 566, 567, 568, 569, 570, 571, 572, 574, 578, 579, 581, 583, 585, 587, 588, 589, 590, 591, 592, 593, 595, 599, 600, 601, 603, 605, 607, 609, 610, 611, 612, 613, 614, 616, 624, 627, 628, 630, 632, 640, 641, 642, 644, 645, 647, 648, 650, 658, 659, 660, 662, 663, 665, 666, 667, 668, 670, 671, 672, 673, 674, 676, 678, 680, 682, 683, 684, 686, 688, 689, 690], "summary": {"covered_lines": 372, "num_statements": 372, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"tmp_dirs": {"executed_lines": [30, 31, 32, 33, 34], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "storage": {"executed_lines": [40, 41, 45, 47], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "mock_db": {"executed_lines": [53, 54, 55, 56, 57, 58, 59, 60], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestResultStorageInit.test_init_creates_directories": {"executed_lines": [73, 74, 76, 80, 82, 84, 85, 86, 87], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestResultStorageInit.test_init_existing_directories": {"executed_lines": [91, 92, 96, 98, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestResultStorageInit.test_constants": {"executed_lines": [105, 107, 108, 109], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "TestStoreResult.test_store_result_creates_file_and_db_record": {"executed_lines": [123, 125, 126, 127, 129, 137, 138, 141, 142, 143, 146, 147, 148], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestStoreResult.test_store_result_no_matching_job": {"executed_lines": [153, 155, 163, 164, 165], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "TestStoreResult.test_store_result_with_none_user_id": {"executed_lines": [170, 172, 180], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "TestStoreResult.test_store_result_returns_uuid_string": {"executed_lines": [185, 187, 196, 197], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "TestStoreResult.test_store_result_db_record_has_correct_data": {"executed_lines": [202, 204, 205, 207, 211, 213, 221, 222, 223, 224, 225], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestStoreResult.test_store_result_db_record_has_correct_data.capture_add": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 207}, "TestGetResult.test_get_result_not_found": {"executed_lines": [239, 241, 243], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "TestGetResult.test_get_result_with_existing_file": {"executed_lines": [248, 249, 250, 251, 253, 254, 255, 259, 260, 262, 264, 265, 266, 267, 268, 269], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246}, "TestGetResult.test_get_result_file_missing": {"executed_lines": [274, 275, 277, 278, 279, 283, 284, 286, 288, 289, 290], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestGetResult.test_get_result_no_output_file_key": {"executed_lines": [295, 297, 298, 299, 300, 301, 303, 305, 306], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 293}, "TestGetResult.test_get_result_created_at_isoformat": {"executed_lines": [311, 312, 313, 314, 316, 317, 318, 319, 320, 321, 323, 325], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309}, "TestDownloadResult.test_download_result_file_exists": {"executed_lines": [339, 340, 341, 342, 344, 346], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "TestDownloadResult.test_download_result_file_missing": {"executed_lines": [351, 352], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "TestDownloadResult.test_download_result_returns_string": {"executed_lines": [357, 358, 359, 361, 363], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestCleanupExpiredResults.test_cleanup_no_expired_results": {"executed_lines": [377, 378, 379, 380, 381, 383, 384, 386, 388, 389], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 375}, "TestCleanupExpiredResults.test_cleanup_deletes_files_and_records": {"executed_lines": [394, 397, 398, 400, 401, 403, 404, 405, 406, 407, 409, 410, 412, 414, 415, 416, 417], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 392}, "TestCleanupExpiredResults.test_cleanup_file_already_removed": {"executed_lines": [422, 423, 425, 426, 427, 428, 429, 431, 432, 434, 437, 438], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 420}, "TestCleanupExpiredResults.test_cleanup_result_with_no_output_file_key": {"executed_lines": [443, 444, 446, 447, 448, 449, 450, 452, 453, 455, 457, 458], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 441}, "TestCleanupExpiredResults.test_cleanup_multiple_expired_results": {"executed_lines": [463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 479, 481, 482, 484, 486, 487, 488, 489, 490], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 461}, "TestGetStorageStats.test_stats_empty_output_dir": {"executed_lines": [503, 505, 506, 507, 508, 509], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 501}, "TestGetStorageStats.test_stats_with_files": {"executed_lines": [513, 515, 516, 518, 520, 521, 522], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511}, "TestGetStorageStats.test_stats_ignores_non_mcaddon_files": {"executed_lines": [526, 528, 529, 530, 532, 534], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "TestGetStorageStats.test_stats_output_directory_path": {"executed_lines": [538, 540, 542], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536}, "TestGetStorageStats.test_stats_expiry_days": {"executed_lines": [546, 548, 550], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544}, "TestGetResultStorageSingleton.test_get_result_storage_returns_instance": {"executed_lines": [563, 566, 567, 568, 569, 570, 571, 572, 574, 578, 579, 581], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 561}, "TestGetResultStorageSingleton.test_get_result_storage_is_singleton": {"executed_lines": [585, 587, 588, 589, 590, 591, 592, 593, 595, 599, 600, 601, 603], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 583}, "TestGetResultStorageSingleton.test_get_result_storage_reuses_existing": {"executed_lines": [607, 609, 610, 611, 612, 613, 614, 616], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605}, "TestResultStorageEdgeCases.test_store_result_empty_bedrock_code": {"executed_lines": [630, 632, 640, 641, 642], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 628}, "TestResultStorageEdgeCases.test_store_result_large_bedrock_code": {"executed_lines": [647, 648, 650, 658, 659, 660], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 645}, "TestResultStorageEdgeCases.test_get_result_empty_metadata": {"executed_lines": [665, 666, 667, 668, 670, 671, 672, 673, 674, 676, 678], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 663}, "TestResultStorageEdgeCases.test_stats_single_large_file": {"executed_lines": [682, 683, 684, 686, 688, 689, 690], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 680}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 27, 28, 37, 38, 50, 51, 68, 71, 89, 103, 117, 120, 121, 150, 151, 167, 168, 182, 183, 199, 200, 233, 236, 237, 245, 246, 271, 272, 292, 293, 308, 309, 333, 336, 337, 348, 349, 354, 355, 371, 374, 375, 391, 392, 419, 420, 440, 441, 460, 461, 498, 501, 511, 524, 536, 544, 558, 561, 583, 605, 624, 627, 628, 644, 645, 662, 663, 680], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestResultStorageInit": {"executed_lines": [73, 74, 76, 80, 82, 84, 85, 86, 87, 91, 92, 96, 98, 100, 101, 105, 107, 108, 109], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestStoreResult": {"executed_lines": [123, 125, 126, 127, 129, 137, 138, 141, 142, 143, 146, 147, 148, 153, 155, 163, 164, 165, 170, 172, 180, 185, 187, 196, 197, 202, 204, 205, 207, 209, 211, 213, 221, 222, 223, 224, 225], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestGetResult": {"executed_lines": [239, 241, 243, 248, 249, 250, 251, 253, 254, 255, 259, 260, 262, 264, 265, 266, 267, 268, 269, 274, 275, 277, 278, 279, 283, 284, 286, 288, 289, 290, 295, 297, 298, 299, 300, 301, 303, 305, 306, 311, 312, 313, 314, 316, 317, 318, 319, 320, 321, 323, 325], "summary": {"covered_lines": 51, "num_statements": 51, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "TestDownloadResult": {"executed_lines": [339, 340, 341, 342, 344, 346, 351, 352, 357, 358, 359, 361, 363], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "TestCleanupExpiredResults": {"executed_lines": [377, 378, 379, 380, 381, 383, 384, 386, 388, 389, 394, 397, 398, 400, 401, 403, 404, 405, 406, 407, 409, 410, 412, 414, 415, 416, 417, 422, 423, 425, 426, 427, 428, 429, 431, 432, 434, 437, 438, 443, 444, 446, 447, 448, 449, 450, 452, 453, 455, 457, 458, 463, 465, 466, 467, 468, 469, 470, 471, 472, 473, 475, 476, 477, 478, 479, 481, 482, 484, 486, 487, 488, 489, 490], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371}, "TestGetStorageStats": {"executed_lines": [503, 505, 506, 507, 508, 509, 513, 515, 516, 518, 520, 521, 522, 526, 528, 529, 530, 532, 534, 538, 540, 542, 546, 548, 550], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 498}, "TestGetResultStorageSingleton": {"executed_lines": [563, 566, 567, 568, 569, 570, 571, 572, 574, 578, 579, 581, 585, 587, 588, 589, 590, 591, 592, 593, 595, 599, 600, 601, 603, 607, 609, 610, 611, 612, 613, 614, 616], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 558}, "TestResultStorageEdgeCases": {"executed_lines": [630, 632, 640, 641, 642, 647, 648, 650, 658, 659, 660, 665, 666, 667, 668, 670, 671, 672, 673, 674, 676, 678, 682, 683, 684, 686, 688, 689, 690], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 624}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 27, 28, 30, 31, 32, 33, 34, 37, 38, 40, 41, 45, 47, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 68, 71, 89, 103, 117, 120, 121, 150, 151, 167, 168, 182, 183, 199, 200, 233, 236, 237, 245, 246, 271, 272, 292, 293, 308, 309, 333, 336, 337, 348, 349, 354, 355, 371, 374, 375, 391, 392, 419, 420, 440, 441, 460, 461, 498, 501, 511, 524, 536, 544, 558, 561, 583, 605, 624, 627, 628, 644, 645, 662, 663, 680], "summary": {"covered_lines": 91, "num_statements": 91, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_retry.py": {"executed_lines": [3, 4, 5, 6, 28, 31, 33, 34, 35, 37, 39, 40, 42, 44, 45, 46, 48, 50, 51, 53, 55, 56, 58, 60, 61, 63, 65, 66, 68, 70, 71, 73, 75, 76, 78, 80, 81, 84, 87, 89, 90, 92, 94, 95, 97, 99, 100, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 125, 127, 129, 131, 133, 135, 137, 139, 141, 144, 147, 149, 151, 152, 153, 154, 155, 157, 159, 167, 168, 169, 170, 171, 173, 175, 177, 178, 180, 182, 183, 185, 190, 191, 194, 197, 199, 201, 202, 203, 205, 206, 207, 209, 211, 213, 215, 217, 219, 221, 225, 226, 229, 232, 234, 235, 237, 239, 241, 242, 244, 246, 248, 249, 251, 253, 255, 256, 258, 260, 262, 266, 268, 270, 272, 276, 278, 281, 284, 285, 287, 289, 291, 292, 294, 296, 297, 299, 300, 302, 304, 306, 307, 308, 309, 311, 313, 314, 316, 317, 319, 321, 323, 324, 326, 327, 329, 331, 332, 334, 336, 338, 339, 341, 342, 345, 348, 351, 353, 355, 357, 358, 360, 362, 363, 365, 367, 369, 371, 372, 373, 374, 376, 378, 379, 381, 383, 385, 387, 388, 390, 391, 393], "summary": {"covered_lines": 204, "num_statements": 204, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestErrorClasses.test_retryable_error": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestErrorClasses.test_non_retryable_error": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "TestErrorClasses.test_parse_error_inherits_from_retryable": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestErrorClasses.test_asset_error_inherits_from_retryable": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestErrorClasses.test_logic_error_inherits_from_non_retryable": {"executed_lines": [55, 56], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestErrorClasses.test_validation_error_inherits_from_non_retryable": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestErrorClasses.test_network_error_inherits_from_retryable": {"executed_lines": [65, 66], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestErrorClasses.test_rate_limit_error_inherits_from_retryable": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestErrorClasses.test_timeout_error_inherits_from_retryable": {"executed_lines": [75, 76], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestErrorClasses.test_package_error_inherits_from_retryable": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestCategorizeError.test_categorize_parse_error": {"executed_lines": [89, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestCategorizeError.test_categorize_asset_error": {"executed_lines": [94, 95], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestCategorizeError.test_categorize_logic_error": {"executed_lines": [99, 100], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestCategorizeError.test_categorize_validation_error": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestCategorizeError.test_categorize_network_error": {"executed_lines": [109, 110], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestCategorizeError.test_categorize_rate_limit_error": {"executed_lines": [114, 115], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestCategorizeError.test_categorize_timeout_error": {"executed_lines": [119, 120], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestCategorizeError.test_categorize_unknown_error": {"executed_lines": [124, 125], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestCategorizeError.test_categorize_by_message_parse": {"executed_lines": [129, 131, 133], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestCategorizeError.test_categorize_by_message_connection": {"executed_lines": [137, 139, 141], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestRetryConfig.test_default_values": {"executed_lines": [149, 151, 152, 153, 154, 155], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestRetryConfig.test_custom_values": {"executed_lines": [159, 167, 168, 169, 170, 171], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "TestRetryConfig.test_default_exceptions": {"executed_lines": [175, 177, 178], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestRetryConfig.test_custom_exceptions": {"executed_lines": [182, 183, 185, 190, 191], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestCalculateDelay.test_exponential_backoff": {"executed_lines": [199, 201, 202, 203, 205, 206, 207], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "TestCalculateDelay.test_max_delay_cap": {"executed_lines": [211, 213, 215], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestCalculateDelay.test_jitter_variation": {"executed_lines": [219, 221, 225, 226], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestIsRetryable.test_retryable_error_returns_true": {"executed_lines": [234, 235, 237], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "TestIsRetryable.test_non_retryable_error_returns_false": {"executed_lines": [241, 242, 244], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 239}, "TestIsRetryable.test_value_error_not_retryable": {"executed_lines": [248, 249, 251], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246}, "TestIsRetryable.test_connection_error_retryable": {"executed_lines": [255, 256, 258], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 253}, "TestIsRetryable.test_custom_retryable_exceptions": {"executed_lines": [262, 266, 268], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestIsRetryable.test_custom_non_retryable_exceptions": {"executed_lines": [272, 276, 278], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "TestRetryAsync.test_successful_call_no_retry": {"executed_lines": [287, 289, 294, 296, 297], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestRetryAsync.test_successful_call_no_retry.succeed": {"executed_lines": [291, 292], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289}, "TestRetryAsync.test_retry_on_failure": {"executed_lines": [302, 304, 311, 313, 314], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestRetryAsync.test_retry_on_failure.fail_twice_then_succeed": {"executed_lines": [306, 307, 308, 309], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "TestRetryAsync.test_max_retries_exceeded": {"executed_lines": [319, 321, 326, 327, 329], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestRetryAsync.test_max_retries_exceeded.always_fail": {"executed_lines": [323, 324], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestRetryAsync.test_non_retryable_error_no_retry": {"executed_lines": [334, 336, 341, 342, 345], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "TestRetryAsync.test_non_retryable_error_no_retry.fail_with_non_retryable": {"executed_lines": [338, 339], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336}, "TestRetrySync.test_successful_call_no_retry": {"executed_lines": [353, 355, 360, 362, 363], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 351}, "TestRetrySync.test_successful_call_no_retry.succeed": {"executed_lines": [357, 358], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestRetrySync.test_retry_on_failure": {"executed_lines": [367, 369, 376, 378, 379], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "TestRetrySync.test_retry_on_failure.fail_twice_then_succeed": {"executed_lines": [371, 372, 373, 374], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestRetrySync.test_max_retries_exceeded": {"executed_lines": [383, 385, 390, 391, 393], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 381}, "TestRetrySync.test_max_retries_exceeded.always_fail": {"executed_lines": [387, 388], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 385}, "": {"executed_lines": [3, 4, 5, 6, 28, 31, 37, 42, 48, 53, 58, 63, 68, 73, 78, 84, 87, 92, 97, 102, 107, 112, 117, 122, 127, 135, 144, 147, 157, 173, 180, 194, 197, 209, 217, 229, 232, 239, 246, 253, 260, 270, 281, 284, 285, 299, 300, 316, 317, 331, 332, 348, 351, 365, 381], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestErrorClasses": {"executed_lines": [33, 34, 35, 39, 40, 44, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestCategorizeError": {"executed_lines": [89, 90, 94, 95, 99, 100, 104, 105, 109, 110, 114, 115, 119, 120, 124, 125, 129, 131, 133, 137, 139, 141], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestRetryConfig": {"executed_lines": [149, 151, 152, 153, 154, 155, 159, 167, 168, 169, 170, 171, 175, 177, 178, 182, 183, 185, 190, 191], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TestCalculateDelay": {"executed_lines": [199, 201, 202, 203, 205, 206, 207, 211, 213, 215, 219, 221, 225, 226], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194}, "TestIsRetryable": {"executed_lines": [234, 235, 237, 241, 242, 244, 248, 249, 251, 255, 256, 258, 262, 266, 268, 272, 276, 278], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestRetryAsync": {"executed_lines": [287, 289, 291, 292, 294, 296, 297, 302, 304, 306, 307, 308, 309, 311, 313, 314, 319, 321, 323, 324, 326, 327, 329, 334, 336, 338, 339, 341, 342, 345], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281}, "TestRetrySync": {"executed_lines": [353, 355, 357, 358, 360, 362, 363, 367, 369, 371, 372, 373, 374, 376, 378, 379, 383, 385, 387, 388, 390, 391, 393], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348}, "": {"executed_lines": [3, 4, 5, 6, 28, 31, 37, 42, 48, 53, 58, 63, 68, 73, 78, 84, 87, 92, 97, 102, 107, 112, 117, 122, 127, 135, 144, 147, 157, 173, 180, 194, 197, 209, 217, 229, 232, 239, 246, 253, 260, 270, 281, 284, 285, 299, 300, 316, 317, 331, 332, 348, 351, 365, 381], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_retry_service_coverage.py": {"executed_lines": [5, 6, 7, 8, 30, 33, 34, 35, 36, 37, 38, 39, 41, 42, 49, 50, 51, 52, 53, 55, 56, 57, 58, 62, 63, 66, 69, 70, 72, 74, 76, 78, 79, 81, 83, 84, 85, 87, 88, 91, 94, 95, 96, 98, 99, 100, 102, 103, 104, 106, 107, 108, 110, 111, 112, 115, 118, 119, 121, 122, 124, 125, 127, 128, 130, 131, 133, 134, 136, 137, 139, 140, 142, 143, 145, 147, 148, 151, 154, 155, 156, 157, 159, 160, 162, 163, 164, 166, 168, 169, 170, 171, 173, 174, 175, 177, 178, 179, 180, 182, 183, 185, 186, 187, 188, 190, 191, 193, 194, 195, 197, 198, 200, 201, 202, 203, 205, 206, 208, 209, 210, 211, 213, 220, 223, 226, 227, 228, 230, 231, 233, 234, 236, 238, 239, 240, 241, 243, 244, 245, 247, 248, 249, 251, 252, 254, 255, 256, 258, 259, 261, 262, 264, 265, 267, 268, 269, 270, 272, 273, 276, 279, 280, 281, 283, 284, 286, 287, 288, 289, 291, 292, 293, 295, 296, 298, 299, 301, 302, 303, 304, 306, 307, 308, 310, 311, 312, 313, 316, 319, 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, 333], "summary": {"covered_lines": 201, "num_statements": 202, "percent_covered": 99.5049504950495, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.5049504950495, "percent_statements_covered_display": "99"}, "missing_lines": [314], "excluded_lines": [], "functions": {"TestRetryConfig.test_default_config": {"executed_lines": [34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestRetryConfig.test_custom_config": {"executed_lines": [42, 49, 50, 51, 52, 53], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestRetryConfig.test_custom_exceptions": {"executed_lines": [56, 57, 58, 62, 63], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestCalculateDelay.test_exponential_backoff_without_jitter": {"executed_lines": [70, 72, 74, 76], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestCalculateDelay.test_max_delay_cap": {"executed_lines": [79, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "TestCalculateDelay.test_jitter_variation": {"executed_lines": [84, 85, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestIsRetryable.test_retryable_error_returns_true": {"executed_lines": [95, 96], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestIsRetryable.test_non_retryable_error_returns_false": {"executed_lines": [99, 100], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestIsRetryable.test_value_error_is_non_retryable": {"executed_lines": [103, 104], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestIsRetryable.test_connection_error_is_retryable": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 106}, "TestIsRetryable.test_unknown_error_defaults_to_retryable": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestCategorizeError.test_parse_error": {"executed_lines": [119], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestCategorizeError.test_asset_error": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestCategorizeError.test_logic_error": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestCategorizeError.test_package_error": {"executed_lines": [128], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestCategorizeError.test_validation_error": {"executed_lines": [131], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestCategorizeError.test_network_error": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestCategorizeError.test_rate_limit_error": {"executed_lines": [137], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestCategorizeError.test_timeout_error": {"executed_lines": [140], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "TestCategorizeError.test_unknown_error": {"executed_lines": [143], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestCategorizeError.test_error_message_pattern_matching": {"executed_lines": [147, 148], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "TestRetryAsync.test_successful_first_attempt": {"executed_lines": [156, 159, 160], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestRetryAsync.test_successful_first_attempt.successful_func": {"executed_lines": [157], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TestRetryAsync.test_retry_on_transient_failure_then_success": {"executed_lines": [164, 166, 173, 174, 175], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "TestRetryAsync.test_retry_on_transient_failure_then_success.flaky_func": {"executed_lines": [168, 169, 170, 171], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestRetryAsync.test_exhaust_all_retries": {"executed_lines": [179, 182, 183], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestRetryAsync.test_exhaust_all_retries.always_fail": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "TestRetryAsync.test_non_retryable_error_raises_immediately": {"executed_lines": [187, 190, 191], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestRetryAsync.test_non_retryable_error_raises_immediately.non_retryable_func": {"executed_lines": [188], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestRetryAsync.test_on_retry_callback": {"executed_lines": [195, 197, 200, 205, 206], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 194}, "TestRetryAsync.test_on_retry_callback.on_retry": {"executed_lines": [198], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 197}, "TestRetryAsync.test_on_retry_callback.flaky_func": {"executed_lines": [201, 202, 203], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestRetryAsync.test_with_kwargs": {"executed_lines": [210, 213, 220], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestRetryAsync.test_with_kwargs.func_with_args": {"executed_lines": [211], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210}, "TestRetrySync.test_successful_first_attempt": {"executed_lines": [227, 230, 231], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "TestRetrySync.test_successful_first_attempt.successful_func": {"executed_lines": [228], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 227}, "TestRetrySync.test_retry_on_transient_failure_then_success": {"executed_lines": [234, 236, 243, 244, 245], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "TestRetrySync.test_retry_on_transient_failure_then_success.flaky_func": {"executed_lines": [238, 239, 240, 241], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestRetrySync.test_exhaust_all_retries": {"executed_lines": [248, 251, 252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247}, "TestRetrySync.test_exhaust_all_retries.always_fail": {"executed_lines": [249], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248}, "TestRetrySync.test_non_retryable_error_raises_immediately": {"executed_lines": [255, 258, 259], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestRetrySync.test_non_retryable_error_raises_immediately.non_retryable_func": {"executed_lines": [256], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 255}, "TestRetrySync.test_on_retry_callback": {"executed_lines": [262, 264, 267, 272, 273], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "TestRetrySync.test_on_retry_callback.on_retry": {"executed_lines": [265], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestRetrySync.test_on_retry_callback.flaky_func": {"executed_lines": [268, 269, 270], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestWithRetryDecorator.test_with_retry_async_decorator": {"executed_lines": [281, 283, 284, 291, 292, 293], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 280}, "TestWithRetryDecorator.test_with_retry_async_decorator.decorated_func": {"executed_lines": [286, 287, 288, 289], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "TestWithRetryDecorator.test_with_retry_sync_decorator": {"executed_lines": [296, 298, 299, 306, 307, 308], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestWithRetryDecorator.test_with_retry_sync_decorator.decorated_func": {"executed_lines": [301, 302, 303, 304], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "TestWithRetryDecorator.test_decorator_preserves_function_name": {"executed_lines": [313, 316], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "TestWithRetryDecorator.test_decorator_preserves_function_name.my_function": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [314], "excluded_lines": [], "start_line": 313}, "TestErrorClasses.test_retryable_error_inheritance": {"executed_lines": [323, 324, 325, 326, 327, 328], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322}, "TestErrorClasses.test_non_retryable_error_inheritance": {"executed_lines": [331, 332, 333], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "": {"executed_lines": [5, 6, 7, 8, 30, 33, 41, 55, 66, 69, 78, 83, 91, 94, 98, 102, 106, 110, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142, 145, 151, 154, 155, 162, 163, 177, 178, 185, 186, 193, 194, 208, 209, 223, 226, 233, 247, 254, 261, 276, 279, 280, 295, 310, 311, 312, 319, 322, 330], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRetryConfig": {"executed_lines": [34, 35, 36, 37, 38, 39, 42, 49, 50, 51, 52, 53, 56, 57, 58, 62, 63], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestCalculateDelay": {"executed_lines": [70, 72, 74, 76, 79, 81, 84, 85, 87, 88], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "TestIsRetryable": {"executed_lines": [95, 96, 99, 100, 103, 104, 107, 108, 111, 112], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestCategorizeError": {"executed_lines": [119, 122, 125, 128, 131, 134, 137, 140, 143, 147, 148], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestRetryAsync": {"executed_lines": [156, 157, 159, 160, 164, 166, 168, 169, 170, 171, 173, 174, 175, 179, 180, 182, 183, 187, 188, 190, 191, 195, 197, 198, 200, 201, 202, 203, 205, 206, 210, 211, 213, 220], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "TestRetrySync": {"executed_lines": [227, 228, 230, 231, 234, 236, 238, 239, 240, 241, 243, 244, 245, 248, 249, 251, 252, 255, 256, 258, 259, 262, 264, 265, 267, 268, 269, 270, 272, 273], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223}, "TestWithRetryDecorator": {"executed_lines": [281, 283, 284, 286, 287, 288, 289, 291, 292, 293, 296, 298, 299, 301, 302, 303, 304, 306, 307, 308, 313, 316], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [314], "excluded_lines": [], "start_line": 276}, "TestErrorClasses": {"executed_lines": [323, 324, 325, 326, 327, 328, 331, 332, 333], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "": {"executed_lines": [5, 6, 7, 8, 30, 33, 41, 55, 66, 69, 78, 83, 91, 94, 98, 102, 106, 110, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142, 145, 151, 154, 155, 162, 163, 177, 178, 185, 186, 193, 194, 208, 209, 223, 226, 233, 247, 254, 261, 276, 279, 280, 295, 310, 311, 312, 319, 322, 330], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_secrets_coverage.py": {"executed_lines": [5, 6, 9, 12, 14, 16, 17, 19, 21, 23, 24, 27, 30, 32, 34, 38], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSecretStr.test_secret_str_repr": {"executed_lines": [14, 16, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "TestSecretStr.test_secret_str_str": {"executed_lines": [21, 23, 24], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestSecretsManagerSettings.test_settings_defaults": {"executed_lines": [32, 34, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [5, 6, 9, 12, 19, 27, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecretStr": {"executed_lines": [14, 16, 17, 21, 23, 24], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "TestSecretsManagerSettings": {"executed_lines": [32, 34, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [5, 6, 9, 12, 19, 27, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_security_auth_coverage.py": {"executed_lines": [5, 6, 7, 8, 9, 25, 28, 29, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 43, 45, 46, 48, 49, 50, 51, 52, 54, 56, 57, 58, 60, 61, 63, 65, 67, 68, 69, 71, 72, 73, 75, 77, 78, 80, 81, 82, 84, 86, 87, 89, 90, 92, 94, 95, 98, 99, 101, 103, 105, 108, 109, 111, 113, 115, 116, 118, 119, 120, 122, 124, 126, 128, 129, 130, 132, 134, 135, 137, 138, 139, 141, 143, 145, 146, 147, 149, 150, 151], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSecurityAuth.test_password_hashing": {"executed_lines": [33, 34, 35, 36, 38, 39, 40, 41], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestSecurityAuth.test_create_access_token_basic": {"executed_lines": [45, 46, 48, 49, 50, 51, 52], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestSecurityAuth.test_create_access_token_with_delta": {"executed_lines": [56, 57, 58, 60, 61, 63], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestSecurityAuth.test_create_access_token_with_claims": {"executed_lines": [67, 68, 69, 71, 72, 73], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestSecurityAuth.test_create_refresh_token": {"executed_lines": [77, 78, 80, 81, 82], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestSecurityAuth.test_verify_token_success": {"executed_lines": [86, 87, 89, 90], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestSecurityAuth.test_verify_token_wrong_type": {"executed_lines": [94, 95, 98, 99], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestSecurityAuth.test_verify_token_invalid": {"executed_lines": [103], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestSecurityAuth.test_verify_token_missing_sub": {"executed_lines": [108, 109, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestSecurityAuth.test_get_token_expiry": {"executed_lines": [115, 116, 118, 119, 120], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestSecurityAuth.test_get_token_expiry_invalid": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "TestSecurityAuth.test_get_token_expiry_missing_exp": {"executed_lines": [128, 129, 130], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "TestSecurityAuth.test_generate_tokens": {"executed_lines": [134, 135, 137, 138, 139], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestSecurityAuth.test_api_key_generation": {"executed_lines": [143, 145, 146, 147, 149, 150, 151], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141}, "": {"executed_lines": [5, 6, 7, 8, 9, 25, 28, 29, 30, 31, 43, 54, 65, 75, 84, 92, 101, 105, 113, 122, 126, 132, 141], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecurityAuth": {"executed_lines": [33, 34, 35, 36, 38, 39, 40, 41, 45, 46, 48, 49, 50, 51, 52, 56, 57, 58, 60, 61, 63, 67, 68, 69, 71, 72, 73, 77, 78, 80, 81, 82, 86, 87, 89, 90, 94, 95, 98, 99, 103, 108, 109, 111, 115, 116, 118, 119, 120, 124, 128, 129, 130, 134, 135, 137, 138, 139, 143, 145, 146, 147, 149, 150, 151], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [5, 6, 7, 8, 9, 25, 28, 29, 30, 31, 43, 54, 65, 75, 84, 92, 101, 105, 113, 122, 126, 132, 141], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_security_file_security_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 28, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 47, 53, 54, 55, 58, 61, 63, 64, 65, 66, 67, 68, 69, 70, 73, 76, 78, 79, 80, 81, 84, 87, 89, 95, 96, 97, 98, 99, 102, 105, 107, 108, 109, 110, 111, 113, 115, 116, 117, 120, 122, 123, 124, 125, 127, 129, 130, 131, 133, 135, 136, 137, 139, 141, 142, 143, 145, 147, 148, 149, 150, 151, 152, 155, 158, 159, 161, 163, 164, 166, 171, 173, 174, 176, 177, 179, 181, 182, 183, 186, 187, 189, 191, 192, 193, 195, 197, 198, 200, 201, 202, 204, 206, 207, 209, 210, 211, 213, 215, 216, 218, 219, 220, 222, 224, 225, 227, 228, 229, 231, 233, 234, 236, 237, 238, 240, 242, 243, 245, 246, 247, 249, 251, 252, 253, 255, 256, 257, 259, 261, 262, 263, 265, 266, 267, 269, 271, 272, 273, 275, 276, 278, 280, 281, 283, 284, 285, 287, 288, 290, 292, 293, 295, 296, 297, 299, 300, 301, 303, 304, 306, 308, 309, 317, 318, 320, 322, 323, 325, 326, 327, 329, 331, 332, 333, 334, 335, 336, 340, 342, 344, 346, 347, 348, 349, 351, 352, 354, 356, 357, 359, 360, 362, 364, 365, 367, 368, 370, 372, 373, 375, 376, 378, 380, 381, 383, 384, 386, 388, 389, 390, 392, 393, 395, 397, 398, 400, 402, 404, 406, 408, 410, 411, 413, 415, 416, 417, 419, 421, 422, 423, 424, 425, 426, 429, 432, 434, 435, 436, 438, 440, 441, 442, 444, 446, 447, 448, 451, 454, 455, 457, 458, 460, 462, 463, 464, 466, 467, 469, 471, 472, 473, 475, 476, 477, 480, 483, 484, 486, 488, 490, 491, 493, 495, 496, 497, 500, 503, 504, 506, 508, 509, 511, 512, 514, 516, 517, 518, 520, 521, 523, 525, 526, 527, 529, 530, 532, 534, 535, 536, 537, 538, 539, 541, 542, 544, 546, 547, 549, 550], "summary": {"covered_lines": 331, "num_statements": 332, "percent_covered": 99.6987951807229, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.6987951807229, "percent_statements_covered_display": "99"}, "missing_lines": [184], "excluded_lines": [], "functions": {"TestSecurityConfig.test_default_config": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestSecurityConfig.test_custom_config": {"executed_lines": [47, 53, 54, 55], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestSecurityThreatType.test_all_threat_types_exist": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestSecuritySeverity.test_all_severity_levels": {"executed_lines": [78, 79, 80, 81], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestSecurityThreat.test_threat_creation": {"executed_lines": [89, 95, 96, 97, 98, 99], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestSecurityScanResult.test_default_result_is_safe": {"executed_lines": [107, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestSecurityScanResult.test_has_critical_threats": {"executed_lines": [115, 116, 117], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestSecurityScanResult.test_has_high_threats": {"executed_lines": [122, 123, 124, 125], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "TestSecurityScanResult.test_low_severity_does_not_impact_safety": {"executed_lines": [129, 130, 131], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestSecurityScanResult.test_high_severity_impacts_safety": {"executed_lines": [135, 136, 137], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestSecurityScanResult.test_critical_severity_impacts_safety": {"executed_lines": [141, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "TestSecurityScanResult.test_multiple_threats": {"executed_lines": [147, 148, 149, 150, 151, 152], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "TestFileSecurityScannerClass.scanner": {"executed_lines": [161], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 159}, "TestFileSecurityScannerClass.strict_scanner": {"executed_lines": [166, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestFileSecurityScannerClass.temp_dir": {"executed_lines": [176, 177], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestFileSecurityScannerClass.create_zip": {"executed_lines": [181, 182, 183, 186, 187], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [184], "excluded_lines": [], "start_line": 179}, "TestFileSecurityScannerClass.test_scan_nonexistent_file": {"executed_lines": [191, 192, 193], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestFileSecurityScannerClass.test_scan_valid_zip": {"executed_lines": [197, 198, 200, 201, 202], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestFileSecurityScannerClass.test_scan_disallowed_extension": {"executed_lines": [206, 207, 209, 210, 211], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestFileSecurityScannerClass.test_detect_path_traversal_dotdot": {"executed_lines": [215, 216, 218, 219, 220], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213}, "TestFileSecurityScannerClass.test_detect_path_traversal_backslash": {"executed_lines": [224, 225, 227, 228, 229], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 222}, "TestFileSecurityScannerClass.test_detect_absolute_path": {"executed_lines": [233, 234, 236, 237, 238], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231}, "TestFileSecurityScannerClass.test_detect_blocked_path_pattern": {"executed_lines": [242, 243, 245, 246, 247], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "TestFileSecurityScannerClass.test_detect_excessive_files": {"executed_lines": [251, 252, 253, 255, 256, 257], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 249}, "TestFileSecurityScannerClass.test_detect_large_file": {"executed_lines": [261, 262, 263, 265, 266, 267], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "TestFileSecurityScannerClass.test_detect_zip_bomb_high_ratio": {"executed_lines": [271, 272, 273, 275, 276], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "TestFileSecurityScannerClass.test_detect_nested_archive": {"executed_lines": [280, 281, 283, 284, 285, 287, 288], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 278}, "TestFileSecurityScannerClass.test_detect_nested_archive_depth_exceeded": {"executed_lines": [292, 293, 295, 296, 297, 299, 300, 301, 303, 304], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 290}, "TestFileSecurityScannerClass.test_detect_suspicious_content": {"executed_lines": [308, 309, 317, 318], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306}, "TestFileSecurityScannerClass.test_scan_corrupted_zip": {"executed_lines": [322, 323, 325, 326, 327], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 320}, "TestFileSecurityScannerClass.test_scan_tar_archive": {"executed_lines": [331, 332, 333, 334, 335, 336, 340, 342], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestFileSecurityScannerClass.test_scan_upload_valid_zip": {"executed_lines": [346, 347, 348, 349, 351, 352], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344}, "TestFileSecurityScannerClass.test_scan_upload_invalid": {"executed_lines": [356, 357, 359, 360], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 354}, "TestFileSecurityScannerClass.test_validate_extraction_path_safe": {"executed_lines": [364, 365, 367, 368], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 362}, "TestFileSecurityScannerClass.test_validate_extraction_path_traversal": {"executed_lines": [372, 373, 375, 376], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 370}, "TestFileSecurityScannerClass.test_validate_extraction_path_absolute": {"executed_lines": [380, 381, 383, 384], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 378}, "TestFileSecurityScannerClass.test_validate_extraction_path_escapes_target": {"executed_lines": [388, 389, 390, 392, 393], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386}, "TestFileSecurityScannerClass.test_is_path_traversal_dotdot": {"executed_lines": [397, 398], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 395}, "TestFileSecurityScannerClass.test_is_path_traversal_backslash": {"executed_lines": [402], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400}, "TestFileSecurityScannerClass.test_is_path_traversal_absolute": {"executed_lines": [406], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 404}, "TestFileSecurityScannerClass.test_is_path_traversal_safe": {"executed_lines": [410, 411], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 408}, "TestFileSecurityScannerClass.test_is_path_traversal_absolute_allowed": {"executed_lines": [415, 416, 417], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 413}, "TestFileSecurityScannerClass.test_is_nested_archive": {"executed_lines": [421, 422, 423, 424, 425, 426], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestSecurityErrors.test_zip_bomb_error": {"executed_lines": [434, 435, 436], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 432}, "TestSecurityErrors.test_path_traversal_error": {"executed_lines": [440, 441, 442], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 438}, "TestSecurityErrors.test_resource_limit_error": {"executed_lines": [446, 447, 448], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 444}, "TestScanArchiveFunction.temp_dir": {"executed_lines": [457, 458], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 455}, "TestScanArchiveFunction.test_scan_archive_valid": {"executed_lines": [462, 463, 464, 466, 467], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 460}, "TestScanArchiveFunction.test_scan_archive_with_config": {"executed_lines": [471, 472, 473, 475, 476, 477], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 469}, "TestCheckExtension.scanner": {"executed_lines": [486], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "TestCheckExtension.test_check_extension_allowed": {"executed_lines": [490, 491], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 488}, "TestCheckExtension.test_check_extension_disallowed": {"executed_lines": [495, 496, 497], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 493}, "TestDetectFileType.scanner": {"executed_lines": [506], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 504}, "TestDetectFileType.temp_dir": {"executed_lines": [511, 512], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 509}, "TestDetectFileType.test_detect_zip_type": {"executed_lines": [516, 517, 518, 520, 521], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 514}, "TestDetectFileType.test_detect_jar_type": {"executed_lines": [525, 526, 527, 529, 530], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523}, "TestDetectFileType.test_detect_tar_gz_type": {"executed_lines": [534, 535, 536, 537, 538, 539, 541, 542], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 532}, "TestDetectFileType.test_detect_unknown_type": {"executed_lines": [546, 547, 549, 550], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 544}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 28, 31, 45, 58, 61, 73, 76, 84, 87, 102, 105, 113, 120, 127, 133, 139, 145, 155, 158, 159, 163, 164, 173, 174, 179, 189, 195, 204, 213, 222, 231, 240, 249, 259, 269, 278, 290, 306, 320, 329, 344, 354, 362, 370, 378, 386, 395, 400, 404, 408, 413, 419, 429, 432, 438, 444, 451, 454, 455, 460, 469, 480, 483, 484, 488, 493, 500, 503, 504, 508, 509, 514, 523, 532, 544], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecurityConfig": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 47, 53, 54, 55], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestSecurityThreatType": {"executed_lines": [63, 64, 65, 66, 67, 68, 69, 70], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "TestSecuritySeverity": {"executed_lines": [78, 79, 80, 81], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestSecurityThreat": {"executed_lines": [89, 95, 96, 97, 98, 99], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "TestSecurityScanResult": {"executed_lines": [107, 108, 109, 110, 111, 115, 116, 117, 122, 123, 124, 125, 129, 130, 131, 135, 136, 137, 141, 142, 143, 147, 148, 149, 150, 151, 152], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestFileSecurityScannerClass": {"executed_lines": [161, 166, 171, 176, 177, 181, 182, 183, 186, 187, 191, 192, 193, 197, 198, 200, 201, 202, 206, 207, 209, 210, 211, 215, 216, 218, 219, 220, 224, 225, 227, 228, 229, 233, 234, 236, 237, 238, 242, 243, 245, 246, 247, 251, 252, 253, 255, 256, 257, 261, 262, 263, 265, 266, 267, 271, 272, 273, 275, 276, 280, 281, 283, 284, 285, 287, 288, 292, 293, 295, 296, 297, 299, 300, 301, 303, 304, 308, 309, 317, 318, 322, 323, 325, 326, 327, 331, 332, 333, 334, 335, 336, 340, 342, 346, 347, 348, 349, 351, 352, 356, 357, 359, 360, 364, 365, 367, 368, 372, 373, 375, 376, 380, 381, 383, 384, 388, 389, 390, 392, 393, 397, 398, 402, 406, 410, 411, 415, 416, 417, 421, 422, 423, 424, 425, 426], "summary": {"covered_lines": 136, "num_statements": 137, "percent_covered": 99.27007299270073, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.27007299270073, "percent_statements_covered_display": "99"}, "missing_lines": [184], "excluded_lines": [], "start_line": 155}, "TestSecurityErrors": {"executed_lines": [434, 435, 436, 440, 441, 442, 446, 447, 448], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 429}, "TestScanArchiveFunction": {"executed_lines": [457, 458, 462, 463, 464, 466, 467, 471, 472, 473, 475, 476, 477], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451}, "TestCheckExtension": {"executed_lines": [486, 490, 491, 495, 496, 497], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480}, "TestDetectFileType": {"executed_lines": [506, 511, 512, 516, 517, 518, 520, 521, 525, 526, 527, 529, 530, 534, 535, 536, 537, 538, 539, 541, 542, 546, 547, 549, 550], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 500}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 28, 31, 45, 58, 61, 73, 76, 84, 87, 102, 105, 113, 120, 127, 133, 139, 145, 155, 158, 159, 163, 164, 173, 174, 179, 189, 195, 204, 213, 222, 231, 240, 249, 259, 269, 278, 290, 306, 320, 329, 344, 354, 362, 370, 378, 386, 395, 400, 404, 408, 413, 419, 429, 432, 438, 444, 451, 454, 455, 460, 469, 480, 483, 484, 488, 493, 500, 503, 504, 508, 509, 514, 523, 532, 544], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_security_headers.py": {"executed_lines": [7, 8, 9, 10, 13, 16, 17, 19, 21, 22, 24, 25, 27, 33, 34, 35, 37, 38, 40, 42, 43, 45, 47, 48, 51, 52, 54, 57, 60, 61, 63, 64, 66, 67, 69, 71, 72, 74, 75, 77, 78, 80, 82, 83, 85, 86, 88, 89, 91, 93, 94, 96, 97, 99, 100, 102, 105, 106, 107, 108, 110, 111, 113, 114, 116, 118, 120, 121, 123, 124, 126, 128, 130, 131, 133, 135, 136, 142, 143, 145, 146, 148, 151, 152, 154, 155, 157, 159, 160, 166, 167, 169, 170, 172, 175, 176, 178, 179, 181, 183, 184, 190, 191, 193, 194, 196, 199, 200, 202, 203, 205, 206, 208, 211, 214, 215, 217, 219, 220, 222, 223, 225, 231, 232, 234, 235, 238, 240, 241, 243, 249, 250, 252, 253, 255, 257, 259, 260, 262, 271, 272, 274, 275, 277, 280, 281, 283, 284, 286, 292, 293, 296, 297, 299, 301, 304, 305, 308, 309, 312, 315, 316, 318, 320, 321, 323, 324, 326, 327, 329, 330, 332, 334, 336, 337, 339, 340, 342, 343, 345, 347, 349, 350, 352, 353, 355, 356, 358, 360, 362, 363, 365, 366, 368, 369, 371, 373], "summary": {"covered_lines": 197, "num_statements": 197, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestSecurityHeadersMiddleware.middleware": {"executed_lines": [19, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestSecurityHeadersMiddleware.mock_request": {"executed_lines": [27, 33, 34, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "TestSecurityHeadersMiddleware.test_middleware_instantiation": {"executed_lines": [40, 42, 43, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestSecurityHeadersMiddleware.test_dispatch_method_adds_x_content_type_options": {"executed_lines": [51, 52, 54, 57, 60, 61], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "TestSecurityHeadersMiddleware.test_dispatch_method_adds_x_frame_options": {"executed_lines": [66, 67, 69, 71, 72], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestSecurityHeadersMiddleware.test_dispatch_method_adds_x_xss_protection": {"executed_lines": [77, 78, 80, 82, 83], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestSecurityHeadersMiddleware.test_dispatch_method_adds_referrer_policy": {"executed_lines": [88, 89, 91, 93, 94], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "TestSecurityHeadersMiddleware.test_all_four_security_headers_added": {"executed_lines": [99, 100, 102, 105, 106, 107, 108], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestSecurityHeadersMiddleware.test_dispatch_returns_response": {"executed_lines": [113, 114, 116, 118], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111}, "TestSecurityHeadersMiddleware.test_dispatch_calls_call_next": {"executed_lines": [123, 124, 126, 128], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestSecurityHeadersMiddleware.test_dispatch_with_different_request_methods": {"executed_lines": [133, 135, 136, 142, 143, 145, 146, 148, 151, 152], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "TestSecurityHeadersMiddleware.test_dispatch_with_different_paths": {"executed_lines": [157, 159, 160, 166, 167, 169, 170, 172, 175, 176], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 155}, "TestSecurityHeadersMiddleware.test_dispatch_with_different_status_codes": {"executed_lines": [181, 183, 184, 190, 191, 193, 194, 196, 199, 200], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "TestSecurityHeadersMiddleware.test_middleware_inherits_from_base_http_middleware": {"executed_lines": [205, 206, 208], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestSecurityHeadersEdgeCases.middleware": {"executed_lines": [217, 219, 220], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 215}, "TestSecurityHeadersEdgeCases.test_dispatch_with_empty_request_path": {"executed_lines": [225, 231, 232, 234, 235, 238], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223}, "TestSecurityHeadersEdgeCases.test_dispatch_with_request_with_query_params": {"executed_lines": [243, 249, 250, 252, 253, 255, 257], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "TestSecurityHeadersEdgeCases.test_dispatch_with_request_with_headers": {"executed_lines": [262, 271, 272, 274, 275, 277, 280, 281], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "TestSecurityHeadersEdgeCases.test_dispatch_does_not_remove_existing_headers": {"executed_lines": [286, 292, 293, 296, 297, 299, 301, 304, 305, 308, 309], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "TestSecurityHeadersValues.middleware": {"executed_lines": [318, 320, 321], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316}, "TestSecurityHeadersValues.test_x_content_type_options_value": {"executed_lines": [326, 327, 329, 330, 332, 334], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 324}, "TestSecurityHeadersValues.test_x_frame_options_value": {"executed_lines": [339, 340, 342, 343, 345, 347], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 337}, "TestSecurityHeadersValues.test_x_xss_protection_value": {"executed_lines": [352, 353, 355, 356, 358, 360], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestSecurityHeadersValues.test_referrer_policy_value": {"executed_lines": [365, 366, 368, 369, 371, 373], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 17, 24, 25, 37, 38, 47, 48, 63, 64, 74, 75, 85, 86, 96, 97, 110, 111, 120, 121, 130, 131, 154, 155, 178, 179, 202, 203, 211, 214, 215, 222, 223, 240, 241, 259, 260, 283, 284, 312, 315, 316, 323, 324, 336, 337, 349, 350, 362, 363], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestSecurityHeadersMiddleware": {"executed_lines": [19, 21, 22, 27, 33, 34, 35, 40, 42, 43, 45, 51, 52, 54, 57, 60, 61, 66, 67, 69, 71, 72, 77, 78, 80, 82, 83, 88, 89, 91, 93, 94, 99, 100, 102, 105, 106, 107, 108, 113, 114, 116, 118, 123, 124, 126, 128, 133, 135, 136, 142, 143, 145, 146, 148, 151, 152, 157, 159, 160, 166, 167, 169, 170, 172, 175, 176, 181, 183, 184, 190, 191, 193, 194, 196, 199, 200, 205, 206, 208], "summary": {"covered_lines": 80, "num_statements": 80, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "TestSecurityHeadersEdgeCases": {"executed_lines": [217, 219, 220, 225, 231, 232, 234, 235, 238, 243, 249, 250, 252, 253, 255, 257, 262, 271, 272, 274, 275, 277, 280, 281, 286, 292, 293, 296, 297, 299, 301, 304, 305, 308, 309], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "TestSecurityHeadersValues": {"executed_lines": [318, 320, 321, 326, 327, 329, 330, 332, 334, 339, 340, 342, 343, 345, 347, 352, 353, 355, 356, 358, 360, 365, 366, 368, 369, 371, 373], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "": {"executed_lines": [7, 8, 9, 10, 13, 16, 17, 24, 25, 37, 38, 47, 48, 63, 64, 74, 75, 85, 86, 96, 97, 110, 111, 120, 121, 130, 131, 154, 155, 178, 179, 202, 203, 211, 214, 215, 222, 223, 240, 241, 259, 260, 283, 284, 312, 315, 316, 323, 324, 336, 337, 349, 350, 362, 363], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_security_resource_limits_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 25, 26, 28, 29, 30, 33, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 49, 55, 56, 57, 58, 61, 64, 66, 67, 68, 69, 70, 71, 72, 74, 76, 83, 84, 85, 86, 88, 90, 97, 98, 99, 100, 101, 104, 107, 109, 110, 111, 112, 113, 114, 115, 118, 121, 123, 124, 125, 126, 128, 130, 131, 132, 134, 136, 137, 138, 140, 141, 142, 144, 146, 147, 148, 149, 150, 151, 153, 155, 156, 157, 159, 160, 161, 162, 164, 166, 167, 169, 171, 172, 174, 175, 176, 178, 180, 181, 183, 184, 185, 186, 187, 188, 189, 191, 193, 194, 196, 197, 198, 199, 201, 203, 204, 205, 206, 207, 209, 211, 212, 213, 214, 216, 218, 219, 220, 221, 223, 225, 226, 228, 229, 230, 232, 234, 235, 236, 238, 240, 241, 242, 244, 246, 247, 252, 254, 256, 257, 258, 259, 261, 263, 264, 265, 267, 269, 270, 271, 272, 273, 274, 276, 278, 279, 280, 282, 284, 285, 286, 288, 290, 291, 292, 295, 298, 300, 301, 302, 304, 306, 307, 308, 310, 312, 313, 314, 315, 316, 317, 318, 319, 321, 323, 324, 325, 326, 328, 330, 331, 332, 333, 335, 337, 338, 339, 340, 341, 344, 347, 349, 350, 351, 353, 356, 357, 360, 363, 365, 366, 367, 369, 371, 372, 373, 375, 376, 377, 379, 381, 382, 384, 385, 386, 388, 390, 391, 392, 393, 394, 395, 396, 398, 399, 401, 403, 404, 405, 407, 409, 410, 411, 412, 413], "summary": {"covered_lines": 259, "num_statements": 259, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"reset_limiter_global": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestResourceLimits.test_default_limits": {"executed_lines": [38, 39, 40, 41, 42, 43, 44, 45], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "TestResourceLimits.test_custom_limits": {"executed_lines": [49, 55, 56, 57, 58], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "TestResourceUsage.test_default_usage": {"executed_lines": [66, 67, 68, 69, 70, 71, 72], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 64}, "TestResourceUsage.test_custom_usage": {"executed_lines": [76, 83, 84, 85, 86], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "TestResourceUsage.test_to_dict": {"executed_lines": [90, 97, 98, 99, 100, 101], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestResourceLimitExceeded.test_exception_message": {"executed_lines": [109, 110, 111, 112, 113, 114, 115], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestResourceLimiter.test_initialization": {"executed_lines": [123, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestResourceLimiter.test_initialization_with_custom_limits": {"executed_lines": [130, 131, 132], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "TestResourceLimiter.test_start_stop_tracking": {"executed_lines": [136, 137, 138, 140, 141, 142], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "TestResourceLimiter.test_start_tracking_with_disk_path": {"executed_lines": [146, 147, 148, 149, 150, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TestResourceLimiter.test_get_current_usage": {"executed_lines": [155, 156, 157, 159, 160, 161, 162], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestResourceLimiter.test_check_limits_no_exceeded": {"executed_lines": [166, 167], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 164}, "TestResourceLimiter.test_check_limits_memory_exceeded": {"executed_lines": [171, 172, 174, 175, 176], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "TestResourceLimiter.test_check_limits_disk_exceeded": {"executed_lines": [180, 181, 183, 184, 185, 186, 187, 188, 189], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestResourceLimiter.test_check_limits_open_files_exceeded": {"executed_lines": [193, 194, 196, 197, 198, 199], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestResourceLimiter.test_check_available_disk_space": {"executed_lines": [203, 204, 205, 206, 207], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "TestResourceLimiter.test_track_operation_upload": {"executed_lines": [211, 212, 213, 214], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestResourceLimiter.test_track_operation_extraction": {"executed_lines": [218, 219, 220, 221], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "TestResourceLimiter.test_track_operation_concurrent_limit": {"executed_lines": [225, 226, 228, 229, 230], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 223}, "TestResourceLimiter.test_track_operation_unknown_type": {"executed_lines": [234, 235, 236], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 232}, "TestResourceLimiter.test_time_limit_context": {"executed_lines": [240, 241, 242], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestResourceLimiter.test_time_limit_exceeded": {"executed_lines": [246, 247, 252], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestResourceLimiter.test_time_limit_custom_seconds": {"executed_lines": [256, 257, 258, 259], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "TestResourceLimiter.test_get_memory_usage_mb": {"executed_lines": [263, 264, 265], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 261}, "TestResourceLimiter.test_get_directory_size_mb": {"executed_lines": [269, 270, 271, 272, 273, 274], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestResourceLimiter.test_get_directory_size_mb_nonexistent": {"executed_lines": [278, 279, 280], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "TestResourceLimiter.test_get_open_file_count": {"executed_lines": [284, 285, 286], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 282}, "TestResourceLimiter.test_get_cpu_time": {"executed_lines": [290, 291, 292], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288}, "TestDiskSpaceMonitor.test_initialization": {"executed_lines": [300, 301, 302], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "TestDiskSpaceMonitor.test_initialization_custom_thresholds": {"executed_lines": [306, 307, 308], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "TestDiskSpaceMonitor.test_check_disk_space_ok": {"executed_lines": [312, 313, 314, 315, 316, 317, 318, 319], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestDiskSpaceMonitor.test_check_disk_space_warning": {"executed_lines": [323, 324, 325, 326], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestDiskSpaceMonitor.test_check_disk_space_error": {"executed_lines": [330, 331, 332, 333], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 328}, "TestDiskSpaceMonitor.test_check_disk_space_returns_all_fields": {"executed_lines": [337, 338, 339, 340, 341], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 335}, "TestGlobalLimiter.test_get_resource_limiter_singleton": {"executed_lines": [349, 350, 351], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 347}, "TestGlobalLimiter.test_get_resource_limiter_creates_instance": {"executed_lines": [356, 357], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 353}, "TestEdgeCases.test_limiter_with_none_start_time": {"executed_lines": [365, 366, 367], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "TestEdgeCases.test_check_limits_processing_time_exceeded": {"executed_lines": [371, 372, 373, 375, 376, 377], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestEdgeCases.test_track_operation_concurrent_extractions": {"executed_lines": [381, 382, 384, 385, 386], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 379}, "TestEdgeCases.test_directory_size_with_subdirs": {"executed_lines": [390, 391, 392, 393, 394, 395, 396, 398, 399], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388}, "TestEdgeCases.test_time_limit_yields": {"executed_lines": [403, 404, 405], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestEdgeCases.test_check_available_disk_space_insufficient": {"executed_lines": [409, 410, 411, 412, 413], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 407}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 25, 26, 33, 36, 47, 61, 64, 74, 88, 104, 107, 118, 121, 128, 134, 144, 153, 164, 169, 178, 191, 201, 209, 216, 223, 232, 238, 244, 254, 261, 267, 276, 282, 288, 295, 298, 304, 310, 321, 328, 335, 344, 347, 353, 360, 363, 369, 379, 388, 401, 407], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestResourceLimits": {"executed_lines": [38, 39, 40, 41, 42, 43, 44, 45, 49, 55, 56, 57, 58], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestResourceUsage": {"executed_lines": [66, 67, 68, 69, 70, 71, 72, 76, 83, 84, 85, 86, 90, 97, 98, 99, 100, 101], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "TestResourceLimitExceeded": {"executed_lines": [109, 110, 111, 112, 113, 114, 115], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestResourceLimiter": {"executed_lines": [123, 124, 125, 126, 130, 131, 132, 136, 137, 138, 140, 141, 142, 146, 147, 148, 149, 150, 151, 155, 156, 157, 159, 160, 161, 162, 166, 167, 171, 172, 174, 175, 176, 180, 181, 183, 184, 185, 186, 187, 188, 189, 193, 194, 196, 197, 198, 199, 203, 204, 205, 206, 207, 211, 212, 213, 214, 218, 219, 220, 221, 225, 226, 228, 229, 230, 234, 235, 236, 240, 241, 242, 246, 247, 252, 256, 257, 258, 259, 263, 264, 265, 269, 270, 271, 272, 273, 274, 278, 279, 280, 284, 285, 286, 290, 291, 292], "summary": {"covered_lines": 97, "num_statements": 97, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestDiskSpaceMonitor": {"executed_lines": [300, 301, 302, 306, 307, 308, 312, 313, 314, 315, 316, 317, 318, 319, 323, 324, 325, 326, 330, 331, 332, 333, 337, 338, 339, 340, 341], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestGlobalLimiter": {"executed_lines": [349, 350, 351, 356, 357], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344}, "TestEdgeCases": {"executed_lines": [365, 366, 367, 371, 372, 373, 375, 376, 377, 381, 382, 384, 385, 386, 390, 391, 392, 393, 394, 395, 396, 398, 399, 403, 404, 405, 409, 410, 411, 412, 413], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 14, 25, 26, 28, 29, 30, 33, 36, 47, 61, 64, 74, 88, 104, 107, 118, 121, 128, 134, 144, 153, 164, 169, 178, 191, 201, 209, 216, 223, 232, 238, 244, 254, 261, 267, 276, 282, 288, 295, 298, 304, 310, 321, 328, 335, 344, 347, 353, 360, 363, 369, 379, 388, 401, 407], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_service_modules_coverage.py": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 43, 44, 46, 48, 50, 51, 52, 53, 54, 55, 57, 59, 61, 62, 64, 65, 67, 75, 76, 77, 79, 80, 82, 86, 88, 90, 91, 93, 95, 97, 99, 100, 102, 104, 106, 109, 112, 113, 115, 116, 117, 118, 120, 121, 123, 124, 125, 128, 130, 132, 134, 136, 137, 139, 140, 142, 143, 151, 153, 154, 156, 157, 159, 160, 162, 165, 168, 169, 171, 173, 175, 177, 179, 181, 182, 184, 186, 188, 189, 191, 193, 195, 196, 198, 200, 202, 203, 205, 207, 208, 211, 214, 215, 217, 218, 220, 221, 223, 225, 227, 228, 230, 231, 233, 235, 237, 238, 240, 241, 243, 245, 247, 248, 250, 251, 253, 255, 257, 258, 260, 261, 263, 264, 266, 268, 270, 271, 273, 274, 276, 280, 282, 284, 286, 287, 289, 290, 292, 296, 298, 300, 302, 303, 305, 307, 308, 310, 319, 322, 325, 326, 329, 331, 333, 334, 336, 338, 340, 341], "summary": {"covered_lines": 183, "num_statements": 184, "percent_covered": 99.45652173913044, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.45652173913044, "percent_statements_covered_display": "99"}, "missing_lines": [327], "excluded_lines": [], "functions": {"TestConversionJobQueue.mock_redis": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestConversionJobQueue.queue": {"executed_lines": [40, 42, 43, 44], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "TestConversionJobQueue.test_queue_initialization": {"executed_lines": [48, 50, 51, 52, 53, 54, 55], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestConversionJobQueue.test_queue_custom_redis_url": {"executed_lines": [59, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestConversionJobQueue.test_enqueue_job": {"executed_lines": [67, 75, 76, 77], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestConversionJobQueue.test_get_job_status": {"executed_lines": [82, 86, 88], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "TestConversionJobQueue.test_get_job_status_not_found": {"executed_lines": [93, 95, 97], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestConversionJobQueue.test_get_queue_stats": {"executed_lines": [102, 104, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "TestResultStorage.mock_db_session": {"executed_lines": [115, 116, 117, 118], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestResultStorage.storage": {"executed_lines": [123, 124, 125, 128, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestResultStorage.test_storage_initialization": {"executed_lines": [134, 136, 137], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestResultStorage.test_store_result": {"executed_lines": [142, 143, 151], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestResultStorage.test_get_result": {"executed_lines": [156, 157, 159, 160, 162], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestReportExporter.exporter": {"executed_lines": [171, 173], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "TestReportExporter.test_exporter_initialization": {"executed_lines": [177], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 175}, "TestReportExporter.test_escape_report_data_string": {"executed_lines": [181, 182, 184], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 179}, "TestReportExporter.test_escape_report_data_dict": {"executed_lines": [188, 189, 191], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestReportExporter.test_escape_report_data_list": {"executed_lines": [195, 196, 198], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "TestReportExporter.test_escape_report_data_int": {"executed_lines": [202, 203], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestReportExporter.test_escape_report_data_none": {"executed_lines": [207, 208], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 205}, "TestExperimentService.mock_db_session": {"executed_lines": [217, 218], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 215}, "TestExperimentService.service": {"executed_lines": [223, 225], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestExperimentService.test_get_active_experiments": {"executed_lines": [230, 231, 233, 235], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "TestExperimentService.test_get_experiment_variants": {"executed_lines": [240, 241, 243, 245], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestExperimentService.test_allocate_variant_no_experiment": {"executed_lines": [250, 251, 253, 255], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248}, "TestExperimentService.test_allocate_variant_inactive": {"executed_lines": [260, 261, 263, 264, 266, 268], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 258}, "TestExperimentService.test_get_control_variant": {"executed_lines": [273, 274, 276, 280, 282, 284], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "TestExperimentService.test_get_control_variant_no_control": {"executed_lines": [289, 290, 292, 296, 298, 300], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestExperimentService.test_record_experiment_result": {"executed_lines": [305, 307, 308, 310, 319], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 303}, "TestAdditionalServiceMethods.mock_db_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [327], "excluded_lines": [], "start_line": 326}, "TestAdditionalServiceMethods.test_queue_constants": {"executed_lines": [331, 333, 334], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestAdditionalServiceMethods.test_storage_paths": {"executed_lines": [338, 340, 341], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 336}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 23, 37, 38, 46, 57, 64, 65, 79, 80, 90, 91, 99, 100, 109, 112, 113, 120, 121, 132, 139, 140, 153, 154, 165, 168, 169, 175, 179, 186, 193, 200, 205, 211, 214, 215, 220, 221, 227, 228, 237, 238, 247, 248, 257, 258, 270, 271, 286, 287, 302, 303, 322, 325, 326, 329, 336], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionJobQueue": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, 42, 43, 44, 48, 50, 51, 52, 53, 54, 55, 59, 61, 62, 67, 75, 76, 77, 82, 86, 88, 93, 95, 97, 102, 104, 106], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "TestResultStorage": {"executed_lines": [115, 116, 117, 118, 123, 124, 125, 128, 130, 134, 136, 137, 142, 143, 151, 156, 157, 159, 160, 162], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "TestReportExporter": {"executed_lines": [171, 173, 177, 181, 182, 184, 188, 189, 191, 195, 196, 198, 202, 203, 207, 208], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestExperimentService": {"executed_lines": [217, 218, 223, 225, 230, 231, 233, 235, 240, 241, 243, 245, 250, 251, 253, 255, 260, 261, 263, 264, 266, 268, 273, 274, 276, 280, 282, 284, 289, 290, 292, 296, 298, 300, 305, 307, 308, 310, 319], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "TestAdditionalServiceMethods": {"executed_lines": [331, 333, 334, 338, 340, 341], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [327], "excluded_lines": [], "start_line": 322}, "": {"executed_lines": [11, 12, 13, 14, 15, 16, 19, 22, 23, 37, 38, 46, 57, 64, 65, 79, 80, 90, 91, 99, 100, 109, 112, 113, 120, 121, 132, 139, 140, 153, 154, 165, 168, 169, 175, 179, 186, 193, 200, 205, 211, 214, 215, 220, 221, 227, 228, 237, 238, 247, 248, 257, 258, 270, 271, 286, 287, 302, 303, 322, 325, 326, 329, 336], "summary": {"covered_lines": 64, "num_statements": 64, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_services_extra_coverage.py": {"executed_lines": [9, 10, 11, 14, 17, 19, 20, 22, 23, 27, 29, 30, 32, 33, 42, 44, 45, 47, 48, 57, 59, 60, 62, 63, 72, 74, 75, 77, 78, 87, 89, 90, 92, 93, 102, 104, 105, 107, 108, 117, 119, 120, 122, 123, 132, 134, 135, 137, 138, 147, 149, 150, 152, 153, 163, 166, 168, 169, 173, 174, 176, 178, 179, 185, 186, 190, 192, 193, 199, 200, 204, 206, 207, 213, 214, 218, 220, 221, 227, 228, 232, 234, 235, 241, 242, 246, 248, 249, 255, 256, 261, 264, 266, 267, 271, 272, 274, 276, 277, 283, 284, 288, 290, 291, 297, 298, 302, 304, 305, 311, 312, 316, 318, 319, 325, 326, 330, 332, 333, 340, 341, 346, 349, 351, 352, 354, 355, 356, 357, 359, 360, 362, 364, 365, 367, 368, 373, 375, 376, 378, 380, 381, 383, 396, 398, 399, 404, 405, 409, 411, 412, 417, 418, 422, 424, 425, 430, 431, 436, 439, 441, 442, 444, 445, 453, 455, 456, 458, 459, 468, 471, 473, 474, 481, 482, 486, 488, 489, 495, 496, 501, 504, 506, 507, 513, 514, 518, 520, 521, 527, 528], "summary": {"covered_lines": 191, "num_statements": 394, "percent_covered": 48.47715736040609, "percent_covered_display": "48", "missing_lines": 203, "excluded_lines": 0, "percent_statements_covered": 48.47715736040609, "percent_statements_covered_display": "48"}, "missing_lines": [24, 25, 34, 35, 36, 37, 38, 39, 40, 49, 50, 51, 52, 53, 54, 55, 64, 65, 66, 67, 68, 69, 70, 79, 80, 81, 82, 83, 84, 85, 94, 95, 96, 97, 98, 99, 100, 109, 110, 111, 112, 113, 114, 115, 124, 125, 126, 127, 128, 129, 130, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160, 171, 172, 181, 182, 183, 184, 187, 188, 195, 196, 197, 198, 201, 202, 209, 210, 211, 212, 215, 216, 223, 224, 225, 226, 229, 230, 237, 238, 239, 240, 243, 244, 251, 252, 253, 254, 257, 258, 269, 270, 279, 280, 281, 282, 285, 286, 293, 294, 295, 296, 299, 300, 307, 308, 309, 310, 313, 314, 321, 322, 323, 324, 327, 328, 335, 336, 337, 338, 339, 342, 343, 358, 369, 370, 371, 372, 374, 385, 386, 387, 389, 390, 391, 392, 393, 394, 401, 402, 403, 406, 407, 414, 415, 416, 419, 420, 427, 428, 429, 432, 433, 446, 447, 448, 449, 450, 451, 460, 461, 462, 463, 464, 465, 476, 477, 478, 479, 480, 483, 484, 491, 492, 493, 494, 497, 498, 509, 510, 511, 512, 515, 516, 523, 524, 525, 526, 529, 530], "excluded_lines": [], "functions": {"TestFileHandler.test_file_handler_init": {"executed_lines": [19, 20, 22, 23], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [24, 25], "excluded_lines": [], "start_line": 17}, "TestFileHandler.test_read_file": {"executed_lines": [29, 30, 32, 33], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [34, 35, 36, 37, 38, 39, 40], "excluded_lines": [], "start_line": 27}, "TestFileHandler.test_write_file": {"executed_lines": [44, 45, 47, 48], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [49, 50, 51, 52, 53, 54, 55], "excluded_lines": [], "start_line": 42}, "TestFileHandler.test_delete_file": {"executed_lines": [59, 60, 62, 63], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70], "excluded_lines": [], "start_line": 57}, "TestFileHandler.test_copy_file": {"executed_lines": [74, 75, 77, 78], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [79, 80, 81, 82, 83, 84, 85], "excluded_lines": [], "start_line": 72}, "TestFileHandler.test_move_file": {"executed_lines": [89, 90, 92, 93], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [94, 95, 96, 97, 98, 99, 100], "excluded_lines": [], "start_line": 87}, "TestFileHandler.test_list_files": {"executed_lines": [104, 105, 107, 108], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [109, 110, 111, 112, 113, 114, 115], "excluded_lines": [], "start_line": 102}, "TestFileHandler.test_file_exists": {"executed_lines": [119, 120, 122, 123], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [124, 125, 126, 127, 128, 129, 130], "excluded_lines": [], "start_line": 117}, "TestFileHandler.test_get_file_size": {"executed_lines": [134, 135, 137, 138], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [139, 140, 141, 142, 143, 144, 145], "excluded_lines": [], "start_line": 132}, "TestFileHandler.test_get_file_info": {"executed_lines": [149, 150, 152, 153], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [154, 155, 156, 157, 158, 159, 160], "excluded_lines": [], "start_line": 147}, "TestModpackParser.test_modpack_parser_init": {"executed_lines": [168, 169, 173, 174], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [171, 172], "excluded_lines": [], "start_line": 166}, "TestModpackParser.test_parse_modpack": {"executed_lines": [178, 179, 185, 186], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [181, 182, 183, 184, 187, 188], "excluded_lines": [], "start_line": 176}, "TestModpackParser.test_extract_mods": {"executed_lines": [192, 193, 199, 200], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [195, 196, 197, 198, 201, 202], "excluded_lines": [], "start_line": 190}, "TestModpackParser.test_validate_modpack": {"executed_lines": [206, 207, 213, 214], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [209, 210, 211, 212, 215, 216], "excluded_lines": [], "start_line": 204}, "TestModpackParser.test_get_mod_info": {"executed_lines": [220, 221, 227, 228], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [223, 224, 225, 226, 229, 230], "excluded_lines": [], "start_line": 218}, "TestModpackParser.test_list_mods": {"executed_lines": [234, 235, 241, 242], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [237, 238, 239, 240, 243, 244], "excluded_lines": [], "start_line": 232}, "TestModpackParser.test_resolve_dependencies": {"executed_lines": [248, 249, 255, 256], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [251, 252, 253, 254, 257, 258], "excluded_lines": [], "start_line": 246}, "TestSyntaxValidator.test_syntax_validator_init": {"executed_lines": [266, 267, 271, 272], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [269, 270], "excluded_lines": [], "start_line": 264}, "TestSyntaxValidator.test_validate_java_syntax": {"executed_lines": [276, 277, 283, 284], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [279, 280, 281, 282, 285, 286], "excluded_lines": [], "start_line": 274}, "TestSyntaxValidator.test_validate_bedrock_syntax": {"executed_lines": [290, 291, 297, 298], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [293, 294, 295, 296, 299, 300], "excluded_lines": [], "start_line": 288}, "TestSyntaxValidator.test_check_syntax_errors": {"executed_lines": [304, 305, 311, 312], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [307, 308, 309, 310, 313, 314], "excluded_lines": [], "start_line": 302}, "TestSyntaxValidator.test_get_error_details": {"executed_lines": [318, 319, 325, 326], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [321, 322, 323, 324, 327, 328], "excluded_lines": [], "start_line": 316}, "TestSyntaxValidator.test_format_errors": {"executed_lines": [332, 333, 340, 341], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [335, 336, 337, 338, 339, 342, 343], "excluded_lines": [], "start_line": 330}, "TestTracing.test_tracing_init": {"executed_lines": [351, 352, 354, 355, 356, 357, 359, 360], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [358], "excluded_lines": [], "start_line": 349}, "TestTracing.test_create_span": {"executed_lines": [364, 365, 367, 368, 373, 375, 376], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 58.333333333333336, "percent_covered_display": "58", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58"}, "missing_lines": [369, 370, 371, 372, 374], "excluded_lines": [], "start_line": 362}, "TestTracing.test_trace_function": {"executed_lines": [380, 381, 383], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27"}, "missing_lines": [385, 386, 389, 390, 391, 392, 393, 394], "excluded_lines": [], "start_line": 378}, "TestTracing.test_trace_function.test_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [387], "excluded_lines": [], "start_line": 386}, "TestTracing.test_add_event": {"executed_lines": [398, 399, 404, 405], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [401, 402, 403, 406, 407], "excluded_lines": [], "start_line": 396}, "TestTracing.test_set_tag": {"executed_lines": [411, 412, 417, 418], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [414, 415, 416, 419, 420], "excluded_lines": [], "start_line": 409}, "TestTracing.test_get_trace_context": {"executed_lines": [424, 425, 430, 431], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [427, 428, 429, 432, 433], "excluded_lines": [], "start_line": 422}, "TestFileHandlerAdvanced.test_batch_read": {"executed_lines": [441, 442, 444, 445], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [446, 447, 448, 449, 450, 451], "excluded_lines": [], "start_line": 439}, "TestFileHandlerAdvanced.test_batch_write": {"executed_lines": [455, 456, 458, 459], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [460, 461, 462, 463, 464, 465], "excluded_lines": [], "start_line": 453}, "TestModpackParserAdvanced.test_parse_manifest": {"executed_lines": [473, 474, 481, 482], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [476, 477, 478, 479, 480, 483, 484], "excluded_lines": [], "start_line": 471}, "TestModpackParserAdvanced.test_detect_modloader": {"executed_lines": [488, 489, 495, 496], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [491, 492, 493, 494, 497, 498], "excluded_lines": [], "start_line": 486}, "TestSyntaxValidatorAdvanced.test_validate_with_config": {"executed_lines": [506, 507, 513, 514], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [509, 510, 511, 512, 515, 516], "excluded_lines": [], "start_line": 504}, "TestSyntaxValidatorAdvanced.test_get_suggestions": {"executed_lines": [520, 521, 527, 528], "summary": {"covered_lines": 4, "num_statements": 10, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [523, 524, 525, 526, 529, 530], "excluded_lines": [], "start_line": 518}, "": {"executed_lines": [9, 10, 11, 14, 17, 27, 42, 57, 72, 87, 102, 117, 132, 147, 163, 166, 176, 190, 204, 218, 232, 246, 261, 264, 274, 288, 302, 316, 330, 346, 349, 362, 378, 396, 409, 422, 436, 439, 453, 468, 471, 486, 501, 504, 518], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFileHandler": {"executed_lines": [19, 20, 22, 23, 29, 30, 32, 33, 44, 45, 47, 48, 59, 60, 62, 63, 74, 75, 77, 78, 89, 90, 92, 93, 104, 105, 107, 108, 119, 120, 122, 123, 134, 135, 137, 138, 149, 150, 152, 153], "summary": {"covered_lines": 40, "num_statements": 105, "percent_covered": 38.095238095238095, "percent_covered_display": "38", "missing_lines": 65, "excluded_lines": 0, "percent_statements_covered": 38.095238095238095, "percent_statements_covered_display": "38"}, "missing_lines": [24, 25, 34, 35, 36, 37, 38, 39, 40, 49, 50, 51, 52, 53, 54, 55, 64, 65, 66, 67, 68, 69, 70, 79, 80, 81, 82, 83, 84, 85, 94, 95, 96, 97, 98, 99, 100, 109, 110, 111, 112, 113, 114, 115, 124, 125, 126, 127, 128, 129, 130, 139, 140, 141, 142, 143, 144, 145, 154, 155, 156, 157, 158, 159, 160], "excluded_lines": [], "start_line": 14}, "TestModpackParser": {"executed_lines": [168, 169, 173, 174, 178, 179, 185, 186, 192, 193, 199, 200, 206, 207, 213, 214, 220, 221, 227, 228, 234, 235, 241, 242, 248, 249, 255, 256], "summary": {"covered_lines": 28, "num_statements": 66, "percent_covered": 42.42424242424242, "percent_covered_display": "42", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 42.42424242424242, "percent_statements_covered_display": "42"}, "missing_lines": [171, 172, 181, 182, 183, 184, 187, 188, 195, 196, 197, 198, 201, 202, 209, 210, 211, 212, 215, 216, 223, 224, 225, 226, 229, 230, 237, 238, 239, 240, 243, 244, 251, 252, 253, 254, 257, 258], "excluded_lines": [], "start_line": 163}, "TestSyntaxValidator": {"executed_lines": [266, 267, 271, 272, 276, 277, 283, 284, 290, 291, 297, 298, 304, 305, 311, 312, 318, 319, 325, 326, 332, 333, 340, 341], "summary": {"covered_lines": 24, "num_statements": 57, "percent_covered": 42.10526315789474, "percent_covered_display": "42", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 42.10526315789474, "percent_statements_covered_display": "42"}, "missing_lines": [269, 270, 279, 280, 281, 282, 285, 286, 293, 294, 295, 296, 299, 300, 307, 308, 309, 310, 313, 314, 321, 322, 323, 324, 327, 328, 335, 336, 337, 338, 339, 342, 343], "excluded_lines": [], "start_line": 261}, "TestTracing": {"executed_lines": [351, 352, 354, 355, 356, 357, 359, 360, 364, 365, 367, 368, 373, 375, 376, 380, 381, 383, 398, 399, 404, 405, 411, 412, 417, 418, 424, 425, 430, 431], "summary": {"covered_lines": 30, "num_statements": 60, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [358, 369, 370, 371, 372, 374, 385, 386, 387, 389, 390, 391, 392, 393, 394, 401, 402, 403, 406, 407, 414, 415, 416, 419, 420, 427, 428, 429, 432, 433], "excluded_lines": [], "start_line": 346}, "TestFileHandlerAdvanced": {"executed_lines": [441, 442, 444, 445, 455, 456, 458, 459], "summary": {"covered_lines": 8, "num_statements": 20, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [446, 447, 448, 449, 450, 451, 460, 461, 462, 463, 464, 465], "excluded_lines": [], "start_line": 436}, "TestModpackParserAdvanced": {"executed_lines": [473, 474, 481, 482, 488, 489, 495, 496], "summary": {"covered_lines": 8, "num_statements": 21, "percent_covered": 38.095238095238095, "percent_covered_display": "38", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 38.095238095238095, "percent_statements_covered_display": "38"}, "missing_lines": [476, 477, 478, 479, 480, 483, 484, 491, 492, 493, 494, 497, 498], "excluded_lines": [], "start_line": 468}, "TestSyntaxValidatorAdvanced": {"executed_lines": [506, 507, 513, 514, 520, 521, 527, 528], "summary": {"covered_lines": 8, "num_statements": 20, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [509, 510, 511, 512, 515, 516, 523, 524, 525, 526, 529, 530], "excluded_lines": [], "start_line": 501}, "": {"executed_lines": [9, 10, 11, 14, 17, 27, 42, 57, 72, 87, 102, 117, 132, 147, 163, 166, 176, 190, 204, 218, 232, 246, 261, 264, 274, 288, 302, 316, 330, 346, 349, 362, 378, 396, 409, 422, 436, 439, 453, 468, 471, 486, 501, 504, 518], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_services_feature_flags_targeted.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 29, 32, 34, 35, 36, 39, 42, 44, 45, 46, 47, 48, 49, 50, 52, 54, 63, 64, 65, 66, 67, 69, 71, 77, 78, 79, 80, 81, 83, 85, 92, 93, 94, 95, 96, 98, 100, 101, 102, 104, 106, 107, 108, 109, 112, 115, 116, 118, 120, 122, 124, 126, 127, 128, 130, 132, 133, 134, 136, 138, 141, 142, 144, 146, 151, 152, 154, 156, 157, 158, 159, 161, 163, 164, 166, 168, 169, 170, 171, 173, 175, 176, 178, 180, 181, 183, 185, 186, 188, 190, 191, 193, 195, 201, 203, 205, 211, 212, 214, 216, 222, 223, 225, 227, 233, 234, 236, 238, 244, 245, 246, 248, 250, 256, 257, 259, 261, 262, 264, 266, 267, 268, 269, 271, 273, 274, 276, 278, 279, 280, 281, 283, 285, 286, 288, 290, 291, 292, 293, 295, 297, 299, 300, 302, 303, 305, 307, 308, 309, 311, 313, 314, 316, 318, 319, 320, 321, 322, 323, 325, 327, 328, 329, 330, 332, 334, 335, 336, 337, 338, 339, 340, 342, 344, 345, 346, 347, 349, 351, 352, 353, 355, 356, 357, 358, 359, 360, 362, 364, 366, 367, 369, 371, 372, 380, 382, 383, 384, 386, 388, 390, 391, 393, 395, 396, 397, 398, 400, 402, 403, 404, 406, 407, 409, 411, 412, 413, 416, 419, 421, 423, 425, 427, 428, 430, 432, 433, 434, 436, 438, 439, 440, 441, 443, 445, 446, 447, 450, 453, 455, 457, 459, 461, 462, 464, 465, 466, 468, 469, 471, 473, 474, 476, 477, 480, 481, 483, 485, 486, 488, 489, 490, 492, 493, 495, 497, 498, 500, 501, 502, 504, 505, 507, 509, 510, 512, 513, 516, 517, 520, 523, 525, 526, 527, 528, 529, 530, 531, 532, 533, 536, 539, 541, 542, 543, 545, 547, 548, 549, 550, 552, 554, 555, 556, 557, 558, 559, 562, 565, 567, 568, 571, 572, 574, 576, 577, 578, 579], "summary": {"covered_lines": 324, "num_statements": 326, "percent_covered": 99.38650306748467, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 99.38650306748467, "percent_statements_covered_display": "99"}, "missing_lines": [478, 514], "excluded_lines": [], "functions": {"TestFeatureFlagType.test_all_types_exist": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestFeatureFlag.test_creation_defaults": {"executed_lines": [44, 45, 46, 47, 48, 49, 50], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestFeatureFlag.test_creation_custom": {"executed_lines": [54, 63, 64, 65, 66, 67], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestFeatureFlag.test_to_dict": {"executed_lines": [71, 77, 78, 79, 80, 81], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestFeatureFlag.test_from_dict": {"executed_lines": [85, 92, 93, 94, 95, 96], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestFeatureFlag.test_from_dict_boolean": {"executed_lines": [100, 101, 102], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 98}, "TestFeatureFlag.test_repr": {"executed_lines": [106, 107, 108, 109], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestFeatureFlagManager.manager": {"executed_lines": [118], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestFeatureFlagManager.test_initialization_empty": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "TestFeatureFlagManager.test_register_flag": {"executed_lines": [126, 127, 128], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 124}, "TestFeatureFlagManager.test_register_flag_overwrites": {"executed_lines": [132, 133, 134], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestFeatureFlagManager.test_register_flag_percentage": {"executed_lines": [138, 141, 142], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 136}, "TestFeatureFlagManager.test_register_flag_variant": {"executed_lines": [146, 151, 152], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TestFeatureFlagManager.test_unregister_flag": {"executed_lines": [156, 157, 158, 159], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestFeatureFlagManager.test_unregister_nonexistent": {"executed_lines": [163, 164], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestFeatureFlagManager.test_get_flag": {"executed_lines": [168, 169, 170, 171], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestFeatureFlagManager.test_get_flag_nonexistent": {"executed_lines": [175, 176], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 173}, "TestFeatureFlagManager.test_is_enabled_boolean_true": {"executed_lines": [180, 181], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestFeatureFlagManager.test_is_enabled_boolean_false": {"executed_lines": [185, 186], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "TestFeatureFlagManager.test_is_enabled_nonexistent": {"executed_lines": [190, 191], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestFeatureFlagManager.test_is_enabled_percentage_disabled": {"executed_lines": [195, 201], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "TestFeatureFlagManager.test_is_enabled_percentage_rollout": {"executed_lines": [205, 211, 212], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestFeatureFlagManager.test_is_enabled_variant_warning": {"executed_lines": [216, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "TestFeatureFlagManager.test_get_variant": {"executed_lines": [227, 233, 234], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 225}, "TestFeatureFlagManager.test_get_variant_consistent_per_user": {"executed_lines": [238, 244, 245, 246], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestFeatureFlagManager.test_get_variant_disabled": {"executed_lines": [250, 256, 257], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 248}, "TestFeatureFlagManager.test_get_variant_nonexistent": {"executed_lines": [261, 262], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "TestFeatureFlagManager.test_enable": {"executed_lines": [266, 267, 268, 269], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 264}, "TestFeatureFlagManager.test_enable_nonexistent": {"executed_lines": [273, 274], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "TestFeatureFlagManager.test_disable": {"executed_lines": [278, 279, 280, 281], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "TestFeatureFlagManager.test_disable_nonexistent": {"executed_lines": [285, 286], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 283}, "TestFeatureFlagManager.test_set_percentage": {"executed_lines": [290, 291, 292, 293], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 288}, "TestFeatureFlagManager.test_set_percentage_clamps_values": {"executed_lines": [297, 299, 300, 302, 303], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestFeatureFlagManager.test_set_percentage_wrong_type": {"executed_lines": [307, 308, 309], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestFeatureFlagManager.test_set_user_context": {"executed_lines": [313, 314], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "TestFeatureFlagManager.test_list_flags": {"executed_lines": [318, 319, 320, 321, 322, 323], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 316}, "TestFeatureFlagManager.test_list_flags_returns_copy": {"executed_lines": [327, 328, 329, 330], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325}, "TestFeatureFlagManager.test_get_all_enabled": {"executed_lines": [334, 335, 336, 337, 338, 339, 340], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 332}, "TestFeatureFlagManager.test_export_config": {"executed_lines": [344, 345, 346, 347], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestFeatureFlagManager.test_save_config": {"executed_lines": [351, 352, 353, 355, 356, 357, 358, 359, 360, 362], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 349}, "TestFeatureFlagManager.test_save_config_no_path": {"executed_lines": [366, 367], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 364}, "TestFeatureFlagManager.test_load_from_file": {"executed_lines": [371, 372, 380, 382, 383, 384, 386], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestFeatureFlagManager.test_load_from_file_not_found": {"executed_lines": [390, 391], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 388}, "TestFeatureFlagManager.test_load_from_env": {"executed_lines": [395, 396, 397, 398], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 393}, "TestFeatureFlagManager.test_compute_percentage_hash": {"executed_lines": [402, 403, 404, 406, 407], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400}, "TestFeatureFlagManager.test_compute_percentage_hash_no_user": {"executed_lines": [411, 412, 413], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 409}, "TestGlobalFunctions.setup_method": {"executed_lines": [421, 423], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestGlobalFunctions.test_get_feature_flag_manager_creates": {"executed_lines": [427, 428], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 425}, "TestGlobalFunctions.test_get_feature_flag_manager_singleton": {"executed_lines": [432, 433, 434], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 430}, "TestGlobalFunctions.test_set_feature_flag_manager": {"executed_lines": [438, 439, 440, 441], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436}, "TestGlobalFunctions.test_is_feature_enabled": {"executed_lines": [445, 446, 447], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 443}, "TestFeatureFlagDecorator.setup_method": {"executed_lines": [455, 457], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "TestFeatureFlagDecorator.test_feature_flag_decorator_enabled": {"executed_lines": [461, 462, 464, 465, 468, 469], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "TestFeatureFlagDecorator.test_feature_flag_decorator_enabled.decorated_func": {"executed_lines": [466], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 465}, "TestFeatureFlagDecorator.test_feature_flag_decorator_disabled": {"executed_lines": [473, 474, 476, 477, 480, 481], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 471}, "TestFeatureFlagDecorator.test_feature_flag_decorator_disabled.decorated_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [478], "excluded_lines": [], "start_line": 477}, "TestFeatureFlagDecorator.test_feature_flag_decorator_passes_args": {"executed_lines": [485, 486, 488, 489, 492, 493], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 483}, "TestFeatureFlagDecorator.test_feature_flag_decorator_passes_args.decorated_func": {"executed_lines": [490], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 489}, "TestFeatureFlagDecorator.test_require_feature_enabled": {"executed_lines": [497, 498, 500, 501, 504, 505], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 495}, "TestFeatureFlagDecorator.test_require_feature_enabled.required_func": {"executed_lines": [502], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 501}, "TestFeatureFlagDecorator.test_require_feature_disabled_raises": {"executed_lines": [509, 510, 512, 513, 516, 517], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 507}, "TestFeatureFlagDecorator.test_require_feature_disabled_raises.required_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [514], "excluded_lines": [], "start_line": 513}, "TestFeatureFlags.test_all_flags_defined": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 523}, "TestDefaultFlags.test_default_flags_structure": {"executed_lines": [541, 542, 543], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 539}, "TestDefaultFlags.test_initialize_default_flags": {"executed_lines": [547, 548, 549, 550], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 545}, "TestDefaultFlags.test_initialize_existing_manager": {"executed_lines": [554, 555, 556, 557, 558, 559], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 552}, "TestEdgeCases.test_get_variant_empty_variants": {"executed_lines": [567, 568, 571, 572], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 565}, "TestEdgeCases.test_percentage_hash_different_flags": {"executed_lines": [576, 577, 578, 579], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 29, 32, 39, 42, 52, 69, 83, 98, 104, 112, 115, 116, 120, 124, 130, 136, 144, 154, 161, 166, 173, 178, 183, 188, 193, 203, 214, 225, 236, 248, 259, 264, 271, 276, 283, 288, 295, 305, 311, 316, 325, 332, 342, 349, 364, 369, 388, 393, 400, 409, 416, 419, 425, 430, 436, 443, 450, 453, 459, 471, 483, 495, 507, 520, 523, 536, 539, 545, 552, 562, 565, 574], "summary": {"covered_lines": 78, "num_statements": 78, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestFeatureFlagType": {"executed_lines": [34, 35, 36], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestFeatureFlag": {"executed_lines": [44, 45, 46, 47, 48, 49, 50, 54, 63, 64, 65, 66, 67, 71, 77, 78, 79, 80, 81, 85, 92, 93, 94, 95, 96, 100, 101, 102, 106, 107, 108, 109], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestFeatureFlagManager": {"executed_lines": [118, 122, 126, 127, 128, 132, 133, 134, 138, 141, 142, 146, 151, 152, 156, 157, 158, 159, 163, 164, 168, 169, 170, 171, 175, 176, 180, 181, 185, 186, 190, 191, 195, 201, 205, 211, 212, 216, 222, 223, 227, 233, 234, 238, 244, 245, 246, 250, 256, 257, 261, 262, 266, 267, 268, 269, 273, 274, 278, 279, 280, 281, 285, 286, 290, 291, 292, 293, 297, 299, 300, 302, 303, 307, 308, 309, 313, 314, 318, 319, 320, 321, 322, 323, 327, 328, 329, 330, 334, 335, 336, 337, 338, 339, 340, 344, 345, 346, 347, 351, 352, 353, 355, 356, 357, 358, 359, 360, 362, 366, 367, 371, 372, 380, 382, 383, 384, 386, 390, 391, 395, 396, 397, 398, 402, 403, 404, 406, 407, 411, 412, 413], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestGlobalFunctions": {"executed_lines": [421, 423, 427, 428, 432, 433, 434, 438, 439, 440, 441, 445, 446, 447], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 416}, "TestFeatureFlagDecorator": {"executed_lines": [455, 457, 461, 462, 464, 465, 466, 468, 469, 473, 474, 476, 477, 480, 481, 485, 486, 488, 489, 490, 492, 493, 497, 498, 500, 501, 502, 504, 505, 509, 510, 512, 513, 516, 517], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.5945945945946, "percent_statements_covered_display": "95"}, "missing_lines": [478, 514], "excluded_lines": [], "start_line": 450}, "TestFeatureFlags": {"executed_lines": [525, 526, 527, 528, 529, 530, 531, 532, 533], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 520}, "TestDefaultFlags": {"executed_lines": [541, 542, 543, 547, 548, 549, 550, 554, 555, 556, 557, 558, 559], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 536}, "TestEdgeCases": {"executed_lines": [567, 568, 571, 572, 576, 577, 578, 579], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 562}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 29, 32, 39, 42, 52, 69, 83, 98, 104, 112, 115, 116, 120, 124, 130, 136, 144, 154, 161, 166, 173, 178, 183, 188, 193, 203, 214, 225, 236, 248, 259, 264, 271, 276, 283, 288, 295, 305, 311, 316, 325, 332, 342, 349, 364, 369, 388, 393, 400, 409, 416, 419, 425, 430, 436, 443, 450, 453, 459, 471, 483, 495, 507, 520, 523, 536, 539, 545, 552, 562, 565, 574], "summary": {"covered_lines": 78, "num_statements": 78, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_services_final_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 21, 23, 25, 26, 27, 29, 31, 32, 33, 35, 37, 39, 40, 41, 43, 45, 46, 48, 49, 51, 53, 54, 56, 59, 60, 62, 64, 65, 67, 68, 70, 71, 73, 75, 76, 77, 79, 80, 82, 83, 85, 87, 88, 90, 92, 93, 95, 97, 98, 99, 101, 102, 104, 105, 107, 109, 110, 111, 113, 114, 116, 117, 119, 121, 122, 123, 125, 126, 128, 129, 131, 133, 134, 135, 137, 138, 139, 141, 142, 144, 146, 147, 148, 150, 152, 153, 155, 157, 158, 159, 161, 162, 164, 165, 167, 169, 170, 171, 173, 175, 176, 178, 180, 181, 182, 184, 185, 187, 188, 190, 192, 193, 195, 197, 198, 200, 202, 203, 205, 206, 208, 209, 211, 213, 214, 216, 218, 219, 221, 223, 224, 225, 227, 228, 229, 230, 232, 233, 235, 237, 238, 239, 241, 242, 244, 245, 247, 249, 250, 251, 253, 255, 256, 258, 260, 261, 262, 264, 266, 267, 269, 271, 272, 274, 276, 277, 279, 281, 282, 283, 285, 287, 289, 291, 292, 293, 295, 296, 298, 300, 302, 303, 304, 306, 307, 309, 310, 312, 314, 315, 317, 318, 320, 321, 323, 325, 326, 327, 329, 330, 332, 333, 335, 337, 338, 340, 341, 343, 344, 346, 348, 349, 350, 352, 353, 356, 359, 361, 362, 363, 365, 367, 369, 371, 372, 373, 375, 377, 379, 381, 383, 391, 392, 394, 396, 398, 399, 400, 401, 403, 405, 407, 408, 409, 411, 413, 415, 416, 417, 419, 421, 423, 424, 425, 427, 429, 431, 432, 433, 434, 436, 438, 440, 441, 442, 444, 446, 448, 449, 451, 453, 455, 456, 458, 460, 462, 463, 465, 467, 469, 470, 471, 473, 475, 477, 478, 479, 481, 483, 485, 486, 487, 488, 490, 492, 494, 495, 496, 498, 500, 502, 503, 504, 506, 508, 510, 511, 512, 515, 518, 520, 522, 523, 525, 526, 528, 530, 532, 533, 535, 537, 539, 541, 542, 544, 546, 548, 550, 551, 553, 554, 556, 558, 560, 561, 569, 571, 572, 574, 576, 578, 579, 581, 584, 587, 589, 591, 593, 594, 595, 596, 598, 599, 600, 601, 603, 605, 607, 609, 610, 612, 613, 615, 617, 619, 620, 622, 623, 625, 627, 629, 630, 631, 633, 635, 637, 638, 639, 641, 643, 645, 646, 649, 651, 653, 655, 657, 658, 659, 660, 662, 663, 664, 665, 667, 670, 673, 675, 676, 678, 680, 682, 684, 689, 691, 693, 695, 696, 698, 700, 702, 704, 709, 711, 712, 714], "summary": {"covered_lines": 426, "num_statements": 426, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestCacheServiceExtraCoverage.test_cache_service_init_redis_disabled": {"executed_lines": [23, 25, 26, 27, 29, 31, 32, 33], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestCacheServiceExtraCoverage.test_cache_service_init_redis_failure": {"executed_lines": [37, 39, 40, 41, 43, 45, 46], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestCacheServiceExtraCoverage.test_cache_set_job_status_redis_unavailable": {"executed_lines": [51, 53, 54, 56], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "TestCacheServiceExtraCoverage.test_cache_get_job_status_redis_unavailable": {"executed_lines": [62, 64, 65, 67, 68], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestCacheServiceExtraCoverage.test_cache_track_progress_exception": {"executed_lines": [73, 75, 76, 77, 79, 80], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "TestCacheServiceExtraCoverage.test_cache_set_progress_redis_unavailable": {"executed_lines": [85, 87, 88, 90], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestCacheServiceExtraCoverage.test_cache_mod_analysis_exception": {"executed_lines": [95, 97, 98, 99, 101, 102], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestCacheServiceExtraCoverage.test_cache_get_mod_analysis_exception": {"executed_lines": [107, 109, 110, 111, 113, 114], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestCacheServiceExtraCoverage.test_cache_conversion_result_exception": {"executed_lines": [119, 121, 122, 123, 125, 126], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 117}, "TestCacheServiceExtraCoverage.test_cache_get_conversion_result_exception": {"executed_lines": [131, 133, 134, 135, 137, 138, 139], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "TestCacheServiceExtraCoverage.test_cache_asset_conversion_exception": {"executed_lines": [144, 146, 147, 148, 150], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestCacheServiceExtraCoverage.test_cache_get_asset_conversion_exception": {"executed_lines": [155, 157, 158, 159, 161, 162], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestCacheServiceExtraCoverage.test_cache_invalidate_cache_exception": {"executed_lines": [167, 169, 170, 171, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestCacheServiceExtraCoverage.test_cache_get_cache_stats_exception": {"executed_lines": [178, 180, 181, 182, 184, 185], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestCacheServiceExtraCoverage.test_cache_set_export_data_redis_unavailable": {"executed_lines": [190, 192, 193, 195], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 188}, "TestCacheServiceExtraCoverage.test_cache_get_export_data_redis_unavailable": {"executed_lines": [200, 202, 203, 205, 206], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "TestCacheServiceExtraCoverage.test_cache_delete_export_data_redis_unavailable": {"executed_lines": [211, 213, 214, 216], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestCacheServiceExtraCoverage.test_cache_conversion_by_hash": {"executed_lines": [221, 223, 224, 225, 227, 228, 229, 230], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 219}, "TestCacheServiceExtraCoverage.test_cache_get_cached_conversion_by_hash": {"executed_lines": [235, 237, 238, 239, 241, 242], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "TestCacheServiceExtraCoverage.test_cache_invalidate_conversion_cache": {"executed_lines": [247, 249, 250, 251, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 245}, "TestCacheServiceExtraCoverage.test_cache_invalidate_mod_analysis_cache": {"executed_lines": [258, 260, 261, 262, 264], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 256}, "TestCacheServiceExtraCoverage.test_cache_clear_all_caches_redis_unavailable": {"executed_lines": [269, 271, 272, 274], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestCacheServiceExtraCoverage.test_cache_clear_all_caches_exception": {"executed_lines": [279, 281, 282, 283, 285], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277}, "TestCacheServiceExtraCoverage.test_cache_get_cache_hit_rate_zero": {"executed_lines": [289, 291, 292, 293, 295, 296], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestCacheServiceExtraCoverage.test_cache_get_cache_hit_rate_calculated": {"executed_lines": [300, 302, 303, 304, 306, 307], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 298}, "TestCacheServiceExtraCoverage.test_cache_get_ai_engine_progress_redis_unavailable": {"executed_lines": [312, 314, 315, 317, 318], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 310}, "TestCacheServiceExtraCoverage.test_cache_get_ai_engine_progress_exception": {"executed_lines": [323, 325, 326, 327, 329, 330], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestCacheServiceExtraCoverage.test_cache_subscribe_to_ai_engine_progress_redis_unavailable": {"executed_lines": [335, 337, 338, 340, 341], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "TestCacheServiceExtraCoverage.test_cache_subscribe_to_ai_engine_progress_exception": {"executed_lines": [346, 348, 349, 350, 352, 353], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 344}, "TestErrorHandlersExtraCoverage.test_is_debug_mode_true": {"executed_lines": [361, 362, 363, 365, 367], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 359}, "TestErrorHandlersExtraCoverage.test_is_debug_mode_false": {"executed_lines": [371, 372, 373, 375, 377], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 369}, "TestErrorHandlersExtraCoverage.test_error_response_model": {"executed_lines": [381, 383, 391, 392], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 379}, "TestErrorHandlersExtraCoverage.test_mod_porter_exception_defaults": {"executed_lines": [396, 398, 399, 400, 401], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 394}, "TestErrorHandlersExtraCoverage.test_conversion_exception_defaults": {"executed_lines": [405, 407, 408, 409], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 403}, "TestErrorHandlersExtraCoverage.test_file_processing_exception_defaults": {"executed_lines": [413, 415, 416, 417], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "TestErrorHandlersExtraCoverage.test_validation_exception_defaults": {"executed_lines": [421, 423, 424, 425], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestErrorHandlersExtraCoverage.test_not_found_exception_defaults": {"executed_lines": [429, 431, 432, 433, 434], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427}, "TestErrorHandlersExtraCoverage.test_rate_limit_exception_defaults": {"executed_lines": [438, 440, 441, 442], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436}, "TestErrorHandlersExtraCoverage.test_rate_limit_exception_with_retry_after": {"executed_lines": [446, 448, 449], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 444}, "TestErrorHandlersExtraCoverage.test_parse_error_defaults": {"executed_lines": [453, 455, 456], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 451}, "TestErrorHandlersExtraCoverage.test_asset_error_defaults": {"executed_lines": [460, 462, 463], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 458}, "TestErrorHandlersExtraCoverage.test_logic_error_defaults": {"executed_lines": [467, 469, 470, 471], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 465}, "TestErrorHandlersExtraCoverage.test_package_error_defaults": {"executed_lines": [475, 477, 478, 479], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 473}, "TestErrorHandlersExtraCoverage.test_error_categories_dict": {"executed_lines": [483, 485, 486, 487, 488], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481}, "TestErrorHandlersExtraCoverage.test_categorize_error_parse_error": {"executed_lines": [492, 494, 495, 496], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 490}, "TestErrorHandlersExtraCoverage.test_categorize_error_asset_error": {"executed_lines": [500, 502, 503, 504], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 498}, "TestErrorHandlersExtraCoverage.test_categorize_error_message_pattern": {"executed_lines": [508, 510, 511, 512], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 506}, "TestReportGeneratorExtraCoverage.test_generate_summary_report_partial_data": {"executed_lines": [520, 522, 523, 525, 526], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 518}, "TestReportGeneratorExtraCoverage.test_generate_feature_analysis_empty": {"executed_lines": [530, 532, 533, 535], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 528}, "TestReportGeneratorExtraCoverage.test_generate_assumptions_report_empty": {"executed_lines": [539, 541, 542, 544], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 537}, "TestReportGeneratorExtraCoverage.test_generate_developer_log_empty": {"executed_lines": [548, 550, 551, 553, 554], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 546}, "TestReportGeneratorExtraCoverage.test_map_mod_statuses_failed_with_reason": {"executed_lines": [558, 560, 561, 569, 571, 572], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 556}, "TestReportGeneratorExtraCoverage.test_map_smart_assumptions_prd_empty": {"executed_lines": [576, 578, 579, 581], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574}, "TestJavaAnalyzerAgentExtraCoverage.test_analyze_jar_empty": {"executed_lines": [589, 591, 593, 594, 595, 596, 598, 599, 600, 601, 603], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 587}, "TestJavaAnalyzerAgentExtraCoverage.test_find_block_texture_not_found": {"executed_lines": [607, 609, 610, 612, 613], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 605}, "TestJavaAnalyzerAgentExtraCoverage.test_find_block_class_name_not_found": {"executed_lines": [617, 619, 620, 622, 623], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 615}, "TestJavaAnalyzerAgentExtraCoverage.test_class_name_to_registry_name_block_suffix": {"executed_lines": [627, 629, 630, 631], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 625}, "TestJavaAnalyzerAgentExtraCoverage.test_class_name_to_registry_name_block_prefix": {"executed_lines": [635, 637, 638, 639], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 633}, "TestJavaAnalyzerAgentExtraCoverage.test_class_name_to_registry_name_empty_result": {"executed_lines": [643, 645, 646, 649], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 641}, "TestJavaAnalyzerAgentExtraCoverage.test_extract_mod_id_from_metadata_no_files": {"executed_lines": [653, 655, 657, 658, 659, 660, 662, 663, 664, 665, 667], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 651}, "TestAPIPerformanceExtraCoverage.test_simulate_benchmark_execution_invalid_scenario": {"executed_lines": [675, 676, 678, 680, 682, 684, 689, 691], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 673}, "TestAPIPerformanceExtraCoverage.test_simulate_benchmark_execution_with_real_scenario": {"executed_lines": [695, 696, 698, 700, 702, 704, 709, 711, 712, 714], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 693}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 21, 35, 48, 49, 59, 60, 70, 71, 82, 83, 92, 93, 104, 105, 116, 117, 128, 129, 141, 142, 152, 153, 164, 165, 175, 176, 187, 188, 197, 198, 208, 209, 218, 219, 232, 233, 244, 245, 255, 256, 266, 267, 276, 277, 287, 298, 309, 310, 320, 321, 332, 333, 343, 344, 356, 359, 369, 379, 394, 403, 411, 419, 427, 436, 444, 451, 458, 465, 473, 481, 490, 498, 506, 515, 518, 528, 537, 546, 556, 574, 584, 587, 605, 615, 625, 633, 641, 651, 670, 673, 693], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestCacheServiceExtraCoverage": {"executed_lines": [23, 25, 26, 27, 29, 31, 32, 33, 37, 39, 40, 41, 43, 45, 46, 51, 53, 54, 56, 62, 64, 65, 67, 68, 73, 75, 76, 77, 79, 80, 85, 87, 88, 90, 95, 97, 98, 99, 101, 102, 107, 109, 110, 111, 113, 114, 119, 121, 122, 123, 125, 126, 131, 133, 134, 135, 137, 138, 139, 144, 146, 147, 148, 150, 155, 157, 158, 159, 161, 162, 167, 169, 170, 171, 173, 178, 180, 181, 182, 184, 185, 190, 192, 193, 195, 200, 202, 203, 205, 206, 211, 213, 214, 216, 221, 223, 224, 225, 227, 228, 229, 230, 235, 237, 238, 239, 241, 242, 247, 249, 250, 251, 253, 258, 260, 261, 262, 264, 269, 271, 272, 274, 279, 281, 282, 283, 285, 289, 291, 292, 293, 295, 296, 300, 302, 303, 304, 306, 307, 312, 314, 315, 317, 318, 323, 325, 326, 327, 329, 330, 335, 337, 338, 340, 341, 346, 348, 349, 350, 352, 353], "summary": {"covered_lines": 161, "num_statements": 161, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "TestErrorHandlersExtraCoverage": {"executed_lines": [361, 362, 363, 365, 367, 371, 372, 373, 375, 377, 381, 383, 391, 392, 396, 398, 399, 400, 401, 405, 407, 408, 409, 413, 415, 416, 417, 421, 423, 424, 425, 429, 431, 432, 433, 434, 438, 440, 441, 442, 446, 448, 449, 453, 455, 456, 460, 462, 463, 467, 469, 470, 471, 475, 477, 478, 479, 483, 485, 486, 487, 488, 492, 494, 495, 496, 500, 502, 503, 504, 508, 510, 511, 512], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "TestReportGeneratorExtraCoverage": {"executed_lines": [520, 522, 523, 525, 526, 530, 532, 533, 535, 539, 541, 542, 544, 548, 550, 551, 553, 554, 558, 560, 561, 569, 571, 572, 576, 578, 579, 581], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515}, "TestJavaAnalyzerAgentExtraCoverage": {"executed_lines": [589, 591, 593, 594, 595, 596, 598, 599, 600, 601, 603, 607, 609, 610, 612, 613, 617, 619, 620, 622, 623, 627, 629, 630, 631, 635, 637, 638, 639, 643, 645, 646, 649, 653, 655, 657, 658, 659, 660, 662, 663, 664, 665, 667], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 584}, "TestAPIPerformanceExtraCoverage": {"executed_lines": [675, 676, 678, 680, 682, 684, 689, 691, 695, 696, 698, 700, 702, 704, 709, 711, 712, 714], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 670}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 21, 35, 48, 49, 59, 60, 70, 71, 82, 83, 92, 93, 104, 105, 116, 117, 128, 129, 141, 142, 152, 153, 164, 165, 175, 176, 187, 188, 197, 198, 208, 209, 218, 219, 232, 233, 244, 245, 255, 256, 266, 267, 276, 277, 287, 298, 309, 310, 320, 321, 332, 333, 343, 344, 356, 359, 369, 379, 394, 403, 411, 419, 427, 436, 444, 451, 458, 465, 473, 481, 490, 498, 506, 515, 518, 528, 537, 546, 556, 574, 584, 587, 605, 615, 625, 633, 641, 651, 670, 673, 693], "summary": {"covered_lines": 101, "num_statements": 101, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_services_misc_coverage.py": {"executed_lines": [9, 10, 11, 14, 17, 19, 21, 25, 26, 27, 28, 29, 30, 31, 33, 35, 37, 38, 40, 41, 42, 43, 44, 46, 48, 50, 51, 53, 54, 55, 57, 59, 61, 62, 63, 65, 66, 67, 69, 71, 73, 74, 75, 77, 79, 81, 83, 84, 86, 87, 88, 90, 92, 94, 95, 97, 98, 100, 102, 104, 105, 106, 108, 110, 111, 112, 113, 114, 116, 118, 119, 121, 122, 123, 125, 126, 129, 132, 134, 135, 136, 138, 139, 140, 141, 145, 147, 148, 152, 153, 155, 157, 158, 164, 165, 167, 169, 170, 172, 176, 178, 179, 181, 183, 184, 189, 190, 195, 198, 200, 201, 203, 205, 206, 208, 210, 211, 213, 215, 216, 225, 230, 233, 235, 236, 238, 242, 244, 245, 247, 251, 253, 254, 259, 260, 265, 268, 270, 272, 273, 274, 275, 277, 279, 281, 283, 284, 285, 287, 289, 291, 293, 294, 295, 296, 298, 300, 302, 304, 305, 306, 308, 309, 311, 313, 315, 316, 318, 320, 321, 323, 325, 327, 334], "summary": {"covered_lines": 174, "num_statements": 201, "percent_covered": 86.56716417910448, "percent_covered_display": "87", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 86.56716417910448, "percent_statements_covered_display": "87"}, "missing_lines": [142, 143, 150, 151, 160, 161, 162, 163, 173, 174, 175, 177, 186, 187, 188, 191, 192, 226, 227, 239, 240, 248, 249, 261, 262, 335, 336], "excluded_lines": [], "functions": {"TestConversionReport.test_conversion_report_creation": {"executed_lines": [19, 21, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestConversionReport.test_add_stage": {"executed_lines": [35, 37, 38, 40, 41, 42, 43, 44], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestConversionReport.test_add_assumption": {"executed_lines": [48, 50, 51, 53, 54, 55], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "TestConversionReport.test_add_issue": {"executed_lines": [59, 61, 62, 63, 65, 66, 67], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestConversionReport.test_set_metrics": {"executed_lines": [71, 73, 74, 75, 77], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "TestConversionReport.test_complete_success": {"executed_lines": [81, 83, 84, 86, 87, 88], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "TestConversionReport.test_complete_failure": {"executed_lines": [92, 94, 95, 97, 98], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestConversionReport.test_to_dict": {"executed_lines": [102, 104, 105, 106, 108, 110, 111, 112, 113, 114], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 100}, "TestConversionReport.test_to_json": {"executed_lines": [118, 119, 121, 122, 123, 125, 126], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 116}, "TestTaskWorker.test_task_worker_init": {"executed_lines": [134, 135, 136, 138, 139, 140, 141], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [142, 143], "excluded_lines": [], "start_line": 132}, "TestTaskWorker.test_task_types": {"executed_lines": [147, 148, 152, 153], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [150, 151], "excluded_lines": [], "start_line": 145}, "TestTaskWorker.test_task_status": {"executed_lines": [157, 158, 164, 165], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [160, 161, 162, 163], "excluded_lines": [], "start_line": 155}, "TestTaskWorker.test_task_execution": {"executed_lines": [169, 170, 172, 176, 178, 179], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [173, 174, 175, 177], "excluded_lines": [], "start_line": 167}, "TestTaskWorker.test_task_creation": {"executed_lines": [183, 184, 189, 190], "summary": {"covered_lines": 4, "num_statements": 9, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [186, 187, 188, 191, 192], "excluded_lines": [], "start_line": 181}, "TestBuildPerformance.test_build_performance_endpoints_exist": {"executed_lines": [200, 201], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "TestBuildPerformance.test_build_stats_endpoint": {"executed_lines": [205, 206], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestBuildPerformance.test_build_metrics_endpoint": {"executed_lines": [210, 211], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208}, "TestBuildPerformance.test_build_performance_post": {"executed_lines": [215, 216, 225], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [226, 227], "excluded_lines": [], "start_line": 213}, "TestEmailVerification.test_email_verification_module_imports": {"executed_lines": [235, 236, 238], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [239, 240], "excluded_lines": [], "start_line": 233}, "TestEmailVerification.test_email_verification_router_exists": {"executed_lines": [244, 245, 247], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [248, 249], "excluded_lines": [], "start_line": 242}, "TestEmailVerification.test_email_verification_models": {"executed_lines": [253, 254, 259, 260], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [261, 262], "excluded_lines": [], "start_line": 251}, "TestConversionReportAdvanced.test_multiple_stages": {"executed_lines": [270, 272, 273, 274, 275, 277], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "TestConversionReportAdvanced.test_multiple_assumptions": {"executed_lines": [281, 283, 284, 285, 287], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestConversionReportAdvanced.test_multiple_issues": {"executed_lines": [291, 293, 294, 295, 296, 298], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 289}, "TestConversionReportAdvanced.test_complete_with_metrics": {"executed_lines": [302, 304, 305, 306, 308, 309], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestConversionReportAdvanced.test_report_timing": {"executed_lines": [313, 315, 316, 318, 320, 321], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 311}, "TestConversionReportAdvanced.test_from_dict": {"executed_lines": [325, 327, 334], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [335, 336], "excluded_lines": [], "start_line": 323}, "": {"executed_lines": [9, 10, 11, 14, 17, 33, 46, 57, 69, 79, 90, 100, 116, 129, 132, 145, 155, 167, 181, 195, 198, 203, 208, 213, 230, 233, 242, 251, 265, 268, 279, 289, 300, 311, 323], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConversionReport": {"executed_lines": [19, 21, 25, 26, 27, 28, 29, 30, 31, 35, 37, 38, 40, 41, 42, 43, 44, 48, 50, 51, 53, 54, 55, 59, 61, 62, 63, 65, 66, 67, 71, 73, 74, 75, 77, 81, 83, 84, 86, 87, 88, 92, 94, 95, 97, 98, 102, 104, 105, 106, 108, 110, 111, 112, 113, 114, 118, 119, 121, 122, 123, 125, 126], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestTaskWorker": {"executed_lines": [134, 135, 136, 138, 139, 140, 141, 147, 148, 152, 153, 157, 158, 164, 165, 169, 170, 172, 176, 178, 179, 183, 184, 189, 190], "summary": {"covered_lines": 25, "num_statements": 42, "percent_covered": 59.523809523809526, "percent_covered_display": "60", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 59.523809523809526, "percent_statements_covered_display": "60"}, "missing_lines": [142, 143, 150, 151, 160, 161, 162, 163, 173, 174, 175, 177, 186, 187, 188, 191, 192], "excluded_lines": [], "start_line": 129}, "TestBuildPerformance": {"executed_lines": [200, 201, 205, 206, 210, 211, 215, 216, 225], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [226, 227], "excluded_lines": [], "start_line": 195}, "TestEmailVerification": {"executed_lines": [235, 236, 238, 244, 245, 247, 253, 254, 259, 260], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [239, 240, 248, 249, 261, 262], "excluded_lines": [], "start_line": 230}, "TestConversionReportAdvanced": {"executed_lines": [270, 272, 273, 274, 275, 277, 281, 283, 284, 285, 287, 291, 293, 294, 295, 296, 298, 302, 304, 305, 306, 308, 309, 313, 315, 316, 318, 320, 321, 325, 327, 334], "summary": {"covered_lines": 32, "num_statements": 34, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.11764705882354, "percent_statements_covered_display": "94"}, "missing_lines": [335, 336], "excluded_lines": [], "start_line": 265}, "": {"executed_lines": [9, 10, 11, 14, 17, 33, 46, 57, 69, 79, 90, 100, 116, 129, 132, 145, 155, 167, 181, 195, 198, 203, 208, 213, 230, 233, 242, 251, 265, 268, 279, 289, 300, 311, 323], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_smart_defaults.py": {"executed_lines": [10, 11, 12, 13, 14, 15, 18, 20], "summary": {"covered_lines": 8, "num_statements": 167, "percent_covered": 4.790419161676646, "percent_covered_display": "5", "missing_lines": 159, "excluded_lines": 0, "percent_statements_covered": 4.790419161676646, "percent_statements_covered_display": "5"}, "missing_lines": [31, 42, 43, 45, 48, 49, 51, 60, 61, 63, 73, 74, 76, 87, 88, 90, 103, 104, 106, 156, 159, 161, 162, 164, 165, 166, 167, 169, 171, 172, 174, 175, 176, 177, 179, 181, 182, 184, 185, 186, 187, 188, 190, 192, 193, 195, 196, 197, 204, 207, 209, 210, 212, 214, 216, 217, 219, 220, 222, 224, 225, 227, 234, 237, 239, 243, 245, 246, 248, 250, 251, 253, 254, 256, 259, 263, 265, 266, 273, 276, 278, 282, 284, 287, 291, 293, 295, 299, 301, 303, 307, 314, 317, 318, 320, 325, 326, 327, 328, 330, 331, 333, 339, 340, 342, 343, 346, 350, 356, 357, 359, 360, 362, 367, 368, 375, 378, 380, 394, 401, 404, 406, 408, 409, 411, 413, 415, 417, 419, 421, 422, 429, 432, 434, 435, 437, 444, 447, 449, 450, 451, 453, 454, 455, 456, 458, 460, 462, 464, 466, 473, 476, 478, 485, 486, 487, 489, 492, 493], "excluded_lines": [], "functions": {"engine": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45], "excluded_lines": [], "start_line": 43}, "simple_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51], "excluded_lines": [], "start_line": 49}, "standard_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63], "excluded_lines": [], "start_line": 61}, "complex_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76], "excluded_lines": [], "start_line": 74}, "expert_features": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90], "excluded_lines": [], "start_line": 88}, "sample_historical_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [106], "excluded_lines": [], "start_line": 104}, "TestModeDefaultRules.test_simple_mode_returns_minimal_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [161, 162, 164, 165, 166, 167], "excluded_lines": [], "start_line": 159}, "TestModeDefaultRules.test_standard_mode_returns_standard_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [171, 172, 174, 175, 176, 177], "excluded_lines": [], "start_line": 169}, "TestModeDefaultRules.test_complex_mode_returns_detailed_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [181, 182, 184, 185, 186, 187, 188], "excluded_lines": [], "start_line": 179}, "TestModeDefaultRules.test_expert_mode_disables_auto_fix": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [192, 193, 195, 196, 197], "excluded_lines": [], "start_line": 190}, "TestFeatureBasedRules.test_has_entities_requires_strict_validation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [209, 210, 212], "excluded_lines": [], "start_line": 207}, "TestFeatureBasedRules.test_has_multiblock_increases_retries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [216, 217, 219, 220], "excluded_lines": [], "start_line": 214}, "TestFeatureBasedRules.test_has_dimensions_disables_auto_fix": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [224, 225, 227], "excluded_lines": [], "start_line": 222}, "TestPatternMatching.test_pattern_matching_returns_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239, 243, 245, 246], "excluded_lines": [], "start_line": 237}, "TestPatternMatching.test_pattern_matching_no_data_returns_empty": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [250, 251, 253, 254], "excluded_lines": [], "start_line": 248}, "TestPatternMatching.test_pattern_matching_wrong_mode_returns_empty": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [259, 263, 265, 266], "excluded_lines": [], "start_line": 256}, "TestConditionEvaluation.test_evaluate_has_items_condition_true": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [278, 282], "excluded_lines": [], "start_line": 276}, "TestConditionEvaluation.test_evaluate_has_items_condition_false": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [287, 291], "excluded_lines": [], "start_line": 284}, "TestConditionEvaluation.test_evaluate_has_dimensions_condition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [295, 299], "excluded_lines": [], "start_line": 293}, "TestConditionEvaluation.test_evaluate_condition_invalid_returns_false": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [303, 307], "excluded_lines": [], "start_line": 301}, "TestGetDefaults.test_get_defaults_simple_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [320, 325, 326, 327, 328], "excluded_lines": [], "start_line": 318}, "TestGetDefaults.test_get_defaults_with_historical_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [333, 339, 340], "excluded_lines": [], "start_line": 331}, "TestGetDefaults.test_get_defaults_with_user_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [346, 350, 356, 357], "excluded_lines": [], "start_line": 343}, "TestGetDefaults.test_get_defaults_complex_mode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [362, 367, 368], "excluded_lines": [], "start_line": 360}, "TestLearning.test_learn_from_conversion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [380, 394], "excluded_lines": [], "start_line": 378}, "TestPatternSuggestions.test_get_pattern_suggestions_simple_item": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [406, 408, 409], "excluded_lines": [], "start_line": 404}, "TestPatternSuggestions.test_get_pattern_suggestions_block_mod": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [413, 415], "excluded_lines": [], "start_line": 411}, "TestPatternSuggestions.test_get_pattern_suggestions_multiblock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [419, 421, 422], "excluded_lines": [], "start_line": 417}, "TestSingleton.test_get_smart_defaults_engine_returns_same_instance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [434, 435, 437], "excluded_lines": [], "start_line": 432}, "TestRuleStructure.test_mode_rules_exist_for_all_modes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [449, 450, 451, 453, 454, 455, 456], "excluded_lines": [], "start_line": 447}, "TestRuleStructure.test_feature_rules_have_conditions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [460, 462], "excluded_lines": [], "start_line": 458}, "TestRuleStructure.test_pattern_library_has_entries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [466], "excluded_lines": [], "start_line": 464}, "TestSmartDefaultsResult.test_result_model_validation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [478, 485, 486, 487], "excluded_lines": [], "start_line": 476}, "TestSmartDefaultsResult.test_result_confidence_rejects_invalid_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [492, 493], "excluded_lines": [], "start_line": 489}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 18, 20], "summary": {"covered_lines": 8, "num_statements": 63, "percent_covered": 12.698412698412698, "percent_covered_display": "13", "missing_lines": 55, "excluded_lines": 0, "percent_statements_covered": 12.698412698412698, "percent_statements_covered_display": "13"}, "missing_lines": [31, 42, 43, 48, 49, 60, 61, 73, 74, 87, 88, 103, 104, 156, 159, 169, 179, 190, 204, 207, 214, 222, 234, 237, 248, 256, 273, 276, 284, 293, 301, 314, 317, 318, 330, 331, 342, 343, 359, 360, 375, 378, 401, 404, 411, 417, 429, 432, 444, 447, 458, 464, 473, 476, 489], "excluded_lines": [], "start_line": 1}}, "classes": {"TestModeDefaultRules": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [161, 162, 164, 165, 166, 167, 171, 172, 174, 175, 176, 177, 181, 182, 184, 185, 186, 187, 188, 192, 193, 195, 196, 197], "excluded_lines": [], "start_line": 156}, "TestFeatureBasedRules": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [209, 210, 212, 216, 217, 219, 220, 224, 225, 227], "excluded_lines": [], "start_line": 204}, "TestPatternMatching": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [239, 243, 245, 246, 250, 251, 253, 254, 259, 263, 265, 266], "excluded_lines": [], "start_line": 234}, "TestConditionEvaluation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [278, 282, 287, 291, 295, 299, 303, 307], "excluded_lines": [], "start_line": 273}, "TestGetDefaults": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [320, 325, 326, 327, 328, 333, 339, 340, 346, 350, 356, 357, 362, 367, 368], "excluded_lines": [], "start_line": 314}, "TestLearning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [380, 394], "excluded_lines": [], "start_line": 375}, "TestPatternSuggestions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [406, 408, 409, 413, 415, 419, 421, 422], "excluded_lines": [], "start_line": 401}, "TestSingleton": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [434, 435, 437], "excluded_lines": [], "start_line": 429}, "TestRuleStructure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [449, 450, 451, 453, 454, 455, 456, 460, 462, 466], "excluded_lines": [], "start_line": 444}, "TestSmartDefaultsResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [478, 485, 486, 487, 492, 493], "excluded_lines": [], "start_line": 473}, "": {"executed_lines": [10, 11, 12, 13, 14, 15, 18, 20], "summary": {"covered_lines": 8, "num_statements": 69, "percent_covered": 11.594202898550725, "percent_covered_display": "12", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 11.594202898550725, "percent_statements_covered_display": "12"}, "missing_lines": [31, 42, 43, 45, 48, 49, 51, 60, 61, 63, 73, 74, 76, 87, 88, 90, 103, 104, 106, 156, 159, 169, 179, 190, 204, 207, 214, 222, 234, 237, 248, 256, 273, 276, 284, 293, 301, 314, 317, 318, 330, 331, 342, 343, 359, 360, 375, 378, 401, 404, 411, 417, 429, 432, 444, 447, 458, 464, 473, 476, 489], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_structured_logging.py": {"executed_lines": [16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 34, 37, 40, 41, 43, 44, 45, 48, 49, 50, 51, 53, 54, 55, 56, 58, 59, 61, 62, 63, 65, 66, 67, 68, 70, 71, 72, 73, 75, 76, 78, 80, 81, 82, 83, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 99, 100, 102, 104, 105, 106, 107, 108, 109, 113, 114, 115, 116, 118, 122, 124, 126, 127, 129, 130, 131, 132, 134, 135, 136, 137, 139, 140, 142, 144, 145, 146, 147, 149, 150, 151, 152, 154, 155, 158, 161, 164, 165, 167, 168, 170, 172, 173, 175, 176, 178, 179, 181, 182, 184, 185, 186, 189, 192, 193, 194, 195, 197, 198, 199, 201, 203, 204, 205, 207, 208, 210, 211, 212, 214, 217, 218, 221, 224, 227, 228, 229, 231, 234, 235, 236, 237, 239, 241, 242, 243, 245, 247, 248, 250, 252, 253, 255, 257, 259, 261, 263, 265, 267, 269, 271, 273, 276, 279, 281, 282, 284, 286, 288, 289, 291, 293, 294, 296, 298, 300, 302, 304, 306, 309, 312, 315, 316, 318, 319, 321, 322, 323, 324, 327, 328, 330, 332, 333, 334, 335, 337, 339, 341, 343, 344, 346, 347, 349, 350, 355, 358, 360, 362, 364, 365, 366, 367, 368, 369, 371, 373, 375, 377, 378, 380, 382, 384, 386, 387, 389, 391, 393, 397, 398, 399, 401, 403, 405, 407, 408, 411, 414, 416, 418, 420, 421, 422, 423, 424, 425, 427, 429, 431, 433, 434, 436, 438, 440, 442, 443, 445, 447, 449, 451, 452, 453, 456, 459, 461, 462, 464, 466, 467, 468, 469, 470, 471, 472, 474, 476, 477, 478, 480, 482, 483, 485, 487, 488, 490, 492, 493, 494, 496, 498, 500, 507, 508, 509, 510, 511, 514, 517, 519, 521, 522, 524, 526, 528, 529, 531, 533, 536, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 550, 553, 554, 555, 556, 558, 560, 563, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 576, 578, 579, 580, 582, 584, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597, 599, 600, 601, 603, 605, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 618, 620, 621, 622, 624, 626, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 639, 641, 642, 644, 646, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 659, 662, 663, 665, 667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 681, 685, 688, 691, 692, 694, 695, 697, 700, 701, 702, 704, 705, 707, 708, 709, 711, 714, 717, 718, 720, 721, 723, 724, 726, 729, 732, 733, 734, 736, 737, 739, 740, 741, 743, 744, 746, 747, 750, 753, 755, 757, 759, 762, 765, 766, 768, 769, 770, 771, 772, 773, 776, 777, 782, 785, 787, 788, 790, 793, 795, 797, 798, 799, 801, 803, 805, 807, 809, 811, 812, 813, 814, 815, 817, 819, 821, 823, 824, 825, 826, 827, 829, 831, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 853, 854, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 867, 869, 870, 871, 874, 877, 879, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 892, 894, 895, 897, 899, 900, 903, 906, 908, 909, 912, 913, 916, 919, 922, 923, 925, 927, 929, 930, 932, 934, 935, 936, 938, 940, 942, 943, 944, 945, 949, 950, 951, 952], "summary": {"covered_lines": 574, "num_statements": 574, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestConfigureStructlog.setup_log_dir": {"executed_lines": [43, 44, 45], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestConfigureStructlog.test_configure_structlog_default": {"executed_lines": [53, 54, 55, 56, 58, 59, 61, 62, 63], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestConfigureStructlog.test_configure_structlog_json_format": {"executed_lines": [70, 71, 72, 73, 75, 76, 78, 80, 81, 82, 83], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestConfigureStructlog.test_configure_structlog_debug_mode": {"executed_lines": [90, 91, 92, 93, 95, 97, 98, 99, 100, 102], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "TestConfigureStructlog.test_configure_structlog_custom_log_file": {"executed_lines": [113, 114, 115, 116, 118, 122, 124, 126, 127], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "TestConfigureStructlog.test_configure_structlog_log_level_from_env": {"executed_lines": [134, 135, 136, 137, 139, 140, 142], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "TestConfigureStructlog.test_configure_structlog_production_env_enables_json": {"executed_lines": [149, 150, 151, 152, 154, 155, 158], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestGetLogger.test_get_logger_returns_structlog_logger": {"executed_lines": [167, 168, 170, 172, 173], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestGetLogger.test_get_logger_different_names": {"executed_lines": [178, 179, 181, 182, 184, 185, 186], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 176}, "TestGetStandardLogger.test_get_standard_logger_first_call": {"executed_lines": [197, 198, 199, 201, 203, 204, 205], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestGetStandardLogger.test_get_standard_logger_existing_handlers": {"executed_lines": [210, 211, 212, 214, 217, 218], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 208}, "TestCorrelationIdManagement.test_set_correlation_id_generates_uuid": {"executed_lines": [227, 228, 229, 231, 234, 235, 236, 237], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestCorrelationIdManagement.test_set_correlation_id_with_value": {"executed_lines": [241, 242, 243, 245, 247, 248], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 239}, "TestCorrelationIdManagement.test_get_correlation_id_returns_value": {"executed_lines": [252, 253, 255, 257], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 250}, "TestCorrelationIdManagement.test_get_correlation_id_returns_none_when_not_set": {"executed_lines": [261, 263, 265], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "TestCorrelationIdManagement.test_clear_correlation_id": {"executed_lines": [269, 271, 273], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestRequestMetadataManagement.test_set_request_metadata": {"executed_lines": [281, 282, 284, 286, 288, 289], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "TestRequestMetadataManagement.test_set_request_metadata_empty": {"executed_lines": [293, 294, 296, 298], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 291}, "TestRequestMetadataManagement.test_clear_request_metadata": {"executed_lines": [302, 304, 306], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestLogContext.test_log_context_enter_exit": {"executed_lines": [315, 316, 318, 319, 321, 322, 323, 324, 327, 328], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "TestLogContext.test_log_context_generates_correlation_id": {"executed_lines": [332, 333, 334, 335, 337, 339], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestLogContext.test_log_context_binds_to_structlog": {"executed_lines": [343, 344, 346, 347, 349, 350], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 341}, "TestLogApiRequest.test_log_api_request_basic": {"executed_lines": [360, 362, 364, 365, 366, 367, 368, 369], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358}, "TestLogApiRequest.test_log_api_request_with_status_code": {"executed_lines": [373, 375, 377, 378], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 371}, "TestLogApiRequest.test_log_api_request_with_duration": {"executed_lines": [382, 384, 386, 387], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 380}, "TestLogApiRequest.test_log_api_request_with_extra_fields": {"executed_lines": [391, 393, 397, 398, 399], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 389}, "TestLogApiRequest.test_log_api_request_duration_rounding": {"executed_lines": [403, 405, 407, 408], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestLogConversionEvent.test_log_conversion_event_basic": {"executed_lines": [416, 418, 420, 421, 422, 423, 424, 425], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 414}, "TestLogConversionEvent.test_log_conversion_event_with_progress": {"executed_lines": [429, 431, 433, 434], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 427}, "TestLogConversionEvent.test_log_conversion_event_completed": {"executed_lines": [438, 440, 442, 443], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 436}, "TestLogConversionEvent.test_log_conversion_event_failed": {"executed_lines": [447, 449, 451, 452, 453], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 445}, "TestLogErrorWithContext.test_log_error_basic": {"executed_lines": [461, 462, 464, 466, 467, 468, 469, 470, 471, 472], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 459}, "TestLogErrorWithContext.test_log_error_with_context_dict": {"executed_lines": [476, 477, 478, 480, 482, 483], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474}, "TestLogErrorWithContext.test_log_error_with_extra_fields": {"executed_lines": [487, 488, 490, 492, 493, 494], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 485}, "TestLogErrorWithContext.test_log_error_different_exception_types": {"executed_lines": [498, 500, 507, 508, 509, 510, 511], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 496}, "TestLoggingFormatter.test_logging_formatter_init": {"executed_lines": [519, 521, 522], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 517}, "TestLoggingFormatter.test_logging_formatter_default_init": {"executed_lines": [526, 528, 529], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 524}, "TestLoggingFormatter.test_logging_formatter_format_json_with_correlation_id": {"executed_lines": [533, 536, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 550, 553, 554, 555, 556], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 531}, "TestLoggingFormatter.test_logging_formatter_format_json_with_request_metadata": {"executed_lines": [560, 563, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 576, 578, 579, 580], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 558}, "TestLoggingFormatter.test_logging_formatter_format_json_with_exception": {"executed_lines": [584, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597, 599, 600, 601], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 582}, "TestLoggingFormatter.test_logging_formatter_format_json_with_extra_data": {"executed_lines": [605, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 618, 620, 621, 622], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603}, "TestLoggingFormatter.test_logging_formatter_format_json_with_duration": {"executed_lines": [626, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 639, 641, 642], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 624}, "TestLoggingFormatter.test_logging_formatter_plain_text_format": {"executed_lines": [646, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 659, 662, 663], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 644}, "TestLoggingFormatter.test_logging_formatter_plain_text_with_correlation_id": {"executed_lines": [667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 681, 685], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 665}, "TestLazyStructlogLogger.test_lazy_structlog_logger_initialization": {"executed_lines": [694, 695, 697, 700, 701, 702], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 692}, "TestLazyStructlogLogger.test_lazy_structlog_logger_getattr": {"executed_lines": [707, 708, 709, 711, 714, 717, 718], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 705}, "TestLazyStructlogLogger.test_lazy_structlog_logger_call": {"executed_lines": [723, 724, 726, 729, 732, 733, 734], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 721}, "TestLazyStructlogLogger.test_lazy_structlog_logger_repr_after_init": {"executed_lines": [739, 740, 741, 743, 744, 746, 747], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 737}, "TestModuleLevelLogger.test_module_logger_exists": {"executed_lines": [755], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 753}, "TestModuleLevelLogger.test_module_logger_is_lazy": {"executed_lines": [759], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 757}, "TestContextVarsIntegration.test_contextvars_in_configure": {"executed_lines": [768, 769, 770, 771, 772, 773, 776, 777], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 766}, "TestEdgeCases.test_set_correlation_id_empty_string": {"executed_lines": [787, 788, 790, 793], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 785}, "TestEdgeCases.test_get_logger_with_special_characters": {"executed_lines": [797, 798, 799, 801, 803], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 795}, "TestEdgeCases.test_log_api_request_all_methods": {"executed_lines": [807, 809, 811, 812, 813, 814, 815], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 805}, "TestEdgeCases.test_log_conversion_event_all_event_types": {"executed_lines": [819, 821, 823, 824, 825, 826, 827], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 817}, "TestEdgeCases.test_log_error_with_none_context": {"executed_lines": [831, 832, 834, 836, 838], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 829}, "TestEdgeCases.test_request_metadata_with_none_values": {"executed_lines": [842, 844, 846, 848], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 840}, "TestEdgeCases.test_logging_formatter_no_correlation_no_metadata": {"executed_lines": [852, 853, 854, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 867, 869, 870, 871], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 850}, "TestLoggingFormatterTimestamp.test_timestamp_format": {"executed_lines": [879, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 892, 894, 895, 897, 899, 900], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 877}, "TestIntegrationScenarios.test_full_request_lifecycle": {"executed_lines": [908, 909, 912, 913, 916, 919, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 906}, "TestIntegrationScenarios.test_log_context_for_request": {"executed_lines": [929, 930, 932, 934, 935, 936], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 927}, "TestIntegrationScenarios.test_log_error_with_full_context": {"executed_lines": [940, 942, 943, 944, 945, 949, 950, 951, 952], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 938}, "": {"executed_lines": [16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 34, 37, 40, 41, 48, 49, 50, 51, 65, 66, 67, 68, 85, 86, 87, 88, 104, 105, 106, 107, 108, 109, 129, 130, 131, 132, 144, 145, 146, 147, 161, 164, 165, 175, 176, 189, 192, 193, 194, 195, 207, 208, 221, 224, 239, 250, 259, 267, 276, 279, 291, 300, 309, 312, 330, 341, 355, 358, 371, 380, 389, 401, 411, 414, 427, 436, 445, 456, 459, 474, 485, 496, 514, 517, 524, 531, 558, 582, 603, 624, 644, 665, 688, 691, 692, 704, 705, 720, 721, 736, 737, 750, 753, 757, 762, 765, 766, 782, 785, 795, 805, 817, 829, 840, 850, 874, 877, 903, 906, 927, 938], "summary": {"covered_lines": 121, "num_statements": 121, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConfigureStructlog": {"executed_lines": [43, 44, 45, 53, 54, 55, 56, 58, 59, 61, 62, 63, 70, 71, 72, 73, 75, 76, 78, 80, 81, 82, 83, 90, 91, 92, 93, 95, 97, 98, 99, 100, 102, 113, 114, 115, 116, 118, 122, 124, 126, 127, 134, 135, 136, 137, 139, 140, 142, 149, 150, 151, 152, 154, 155, 158], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 37}, "TestGetLogger": {"executed_lines": [167, 168, 170, 172, 173, 178, 179, 181, 182, 184, 185, 186], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 161}, "TestGetStandardLogger": {"executed_lines": [197, 198, 199, 201, 203, 204, 205, 210, 211, 212, 214, 217, 218], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestCorrelationIdManagement": {"executed_lines": [227, 228, 229, 231, 234, 235, 236, 237, 241, 242, 243, 245, 247, 248, 252, 253, 255, 257, 261, 263, 265, 269, 271, 273], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "TestRequestMetadataManagement": {"executed_lines": [281, 282, 284, 286, 288, 289, 293, 294, 296, 298, 302, 304, 306], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 276}, "TestLogContext": {"executed_lines": [315, 316, 318, 319, 321, 322, 323, 324, 327, 328, 332, 333, 334, 335, 337, 339, 343, 344, 346, 347, 349, 350], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 309}, "TestLogApiRequest": {"executed_lines": [360, 362, 364, 365, 366, 367, 368, 369, 373, 375, 377, 378, 382, 384, 386, 387, 391, 393, 397, 398, 399, 403, 405, 407, 408], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestLogConversionEvent": {"executed_lines": [416, 418, 420, 421, 422, 423, 424, 425, 429, 431, 433, 434, 438, 440, 442, 443, 447, 449, 451, 452, 453], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 411}, "TestLogErrorWithContext": {"executed_lines": [461, 462, 464, 466, 467, 468, 469, 470, 471, 472, 476, 477, 478, 480, 482, 483, 487, 488, 490, 492, 493, 494, 498, 500, 507, 508, 509, 510, 511], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 456}, "TestLoggingFormatter": {"executed_lines": [519, 521, 522, 526, 528, 529, 533, 536, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 550, 553, 554, 555, 556, 560, 563, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 576, 578, 579, 580, 584, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597, 599, 600, 601, 605, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 618, 620, 621, 622, 626, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 639, 641, 642, 646, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 659, 662, 663, 667, 668, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 681, 685], "summary": {"covered_lines": 111, "num_statements": 111, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 514}, "TestLazyStructlogLogger": {"executed_lines": [694, 695, 697, 700, 701, 702, 707, 708, 709, 711, 714, 717, 718, 723, 724, 726, 729, 732, 733, 734, 739, 740, 741, 743, 744, 746, 747], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 688}, "TestModuleLevelLogger": {"executed_lines": [755, 759], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 750}, "TestContextVarsIntegration": {"executed_lines": [768, 769, 770, 771, 772, 773, 776, 777], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 762}, "TestEdgeCases": {"executed_lines": [787, 788, 790, 793, 797, 798, 799, 801, 803, 807, 809, 811, 812, 813, 814, 815, 819, 821, 823, 824, 825, 826, 827, 831, 832, 834, 836, 838, 842, 844, 846, 848, 852, 853, 854, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 867, 869, 870, 871], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 782}, "TestLoggingFormatterTimestamp": {"executed_lines": [879, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 892, 894, 895, 897, 899, 900], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 874}, "TestIntegrationScenarios": {"executed_lines": [908, 909, 912, 913, 916, 919, 922, 923, 925, 929, 930, 932, 934, 935, 936, 940, 942, 943, 944, 945, 949, 950, 951, 952], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903}, "": {"executed_lines": [16, 17, 18, 19, 20, 21, 22, 23, 30, 31, 34, 37, 40, 41, 48, 49, 50, 51, 65, 66, 67, 68, 85, 86, 87, 88, 104, 105, 106, 107, 108, 109, 129, 130, 131, 132, 144, 145, 146, 147, 161, 164, 165, 175, 176, 189, 192, 193, 194, 195, 207, 208, 221, 224, 239, 250, 259, 267, 276, 279, 291, 300, 309, 312, 330, 341, 355, 358, 371, 380, 389, 401, 411, 414, 427, 436, 445, 456, 459, 474, 485, 496, 514, 517, 524, 531, 558, 582, 603, 624, 644, 665, 688, 691, 692, 704, 705, 720, 721, 736, 737, 750, 753, 757, 762, 765, 766, 782, 785, 795, 805, 817, 829, 840, 850, 874, 877, 903, 906, 927, 938], "summary": {"covered_lines": 121, "num_statements": 121, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_syntax_validator.py": {"executed_lines": [1, 2, 3, 11, 12, 13, 15, 16, 17, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 33, 34, 45, 46, 48, 49, 56, 57, 58, 60, 61, 71, 74, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"js_validator": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "json_validator": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "test_js_validator_basic_unmatched_braces": {"executed_lines": [21, 22, 23, 24, 25], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "test_js_validator_basic_valid": {"executed_lines": [28, 29, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "test_json_validator_manifest_valid": {"executed_lines": [34, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "test_json_validator_manifest_invalid_missing_fields": {"executed_lines": [49, 56, 57, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "test_json_validator_block_invalid_identifier": {"executed_lines": [61, 71, 74], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "test_syntax_autofix_braces": {"executed_lines": [77, 78, 79], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "test_syntax_autofix_semicolons": {"executed_lines": [82, 83, 84, 85], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "test_auto_fix_javascript_full": {"executed_lines": [88, 89, 90, 91, 92], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "": {"executed_lines": [1, 2, 3, 11, 12, 15, 16, 19, 27, 33, 48, 60, 76, 81, 87], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 11, 12, 13, 15, 16, 17, 19, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 33, 34, 45, 46, 48, 49, 56, 57, 58, 60, 61, 71, 74, 76, 77, 78, 79, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_queue_coverage.py": {"executed_lines": [11, 12, 13, 15, 23, 26, 28, 29, 30, 31, 32, 34, 36, 37, 40, 43, 45, 46, 47, 48, 50, 52, 53, 54, 55, 56, 57, 60, 63, 65, 71, 72, 73, 74, 75, 77, 79, 80, 81, 83, 98, 99, 100, 102, 104, 110, 112, 113, 114, 115, 116, 118, 120, 122, 123, 124, 125, 126, 127, 130, 133, 135, 137, 138, 139, 140, 142, 144, 146, 147, 148, 150, 152, 158, 159, 160, 162, 164, 165, 166, 168, 170, 171], "summary": {"covered_lines": 83, "num_statements": 83, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestTaskStatus.test_task_status_values": {"executed_lines": [28, 29, 30, 31, 32], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestTaskStatus.test_task_status_from_value": {"executed_lines": [36, 37], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestTaskPriority.test_task_priority_values": {"executed_lines": [45, 46, 47, 48], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "TestTaskPriority.test_task_priority_members": {"executed_lines": [52, 53, 54, 55, 56, 57], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "TestTask.test_task_creation": {"executed_lines": [65, 71, 72, 73, 74, 75], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "TestTask.test_task_with_all_fields": {"executed_lines": [79, 80, 81, 83, 98, 99, 100], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "TestTask.test_task_to_dict": {"executed_lines": [104, 110, 112, 113, 114, 115, 116], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestTask.test_task_default_values": {"executed_lines": [120, 122, 123, 124, 125, 126, 127], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestAsyncTaskQueue.test_queue_names": {"executed_lines": [135, 137, 138, 139, 140], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "TestAsyncTaskQueue.test_default_values": {"executed_lines": [144, 146, 147, 148], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "TestAsyncTaskQueue.test_custom_values": {"executed_lines": [152, 158, 159, 160], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestAsyncTaskQueue.test_running_tasks_initialized": {"executed_lines": [164, 165, 166], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "TestAsyncTaskQueue.test_queue_priority_count": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "": {"executed_lines": [11, 12, 13, 15, 23, 26, 34, 40, 43, 50, 60, 63, 77, 102, 118, 130, 133, 142, 150, 162, 168], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTaskStatus": {"executed_lines": [28, 29, 30, 31, 32, 36, 37], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestTaskPriority": {"executed_lines": [45, 46, 47, 48, 52, 53, 54, 55, 56, 57], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "TestTask": {"executed_lines": [65, 71, 72, 73, 74, 75, 79, 80, 81, 83, 98, 99, 100, 104, 110, 112, 113, 114, 115, 116, 120, 122, 123, 124, 125, 126, 127], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestAsyncTaskQueue": {"executed_lines": [135, 137, 138, 139, 140, 144, 146, 147, 148, 152, 158, 159, 160, 164, 165, 166, 170, 171], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "": {"executed_lines": [11, 12, 13, 15, 23, 26, 34, 40, 43, 50, 60, 63, 77, 102, 118, 130, 133, 142, 150, 162, 168], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_queue_enhanced.py": {"executed_lines": [7, 8, 9, 10, 11, 13, 26, 29, 31, 33, 34, 35, 36, 37, 39, 41, 46, 49, 52, 55, 57, 59, 64, 65, 67, 69, 71, 72, 73, 75, 77, 79, 80, 82, 84, 86, 87, 88, 90, 92, 94, 95, 97, 98, 101, 104, 106, 108, 109, 110, 111, 112, 113, 115, 117, 125, 127, 128, 129, 130, 131, 132, 134, 136, 154, 156, 157, 158, 159, 160, 163, 166, 168, 169, 170, 171, 172, 173, 174, 177, 180, 182, 183, 184, 187, 190, 192, 200, 201, 203, 205, 213, 219, 221, 222, 224, 226, 228, 230, 231, 232, 233, 236, 239, 241, 248, 249, 250, 253, 254, 255, 257, 259, 261, 262, 263, 264, 267, 270, 272, 282, 284, 286, 289, 290, 293, 294, 295, 298, 299, 300, 301, 304, 307, 309, 313, 316, 317, 319, 321, 326, 327, 332, 333, 336, 337, 343, 344, 349, 350, 354, 355], "summary": {"covered_lines": 152, "num_statements": 157, "percent_covered": 96.81528662420382, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 96.81528662420382, "percent_statements_covered_display": "97"}, "missing_lines": [339, 341, 347, 352, 357], "excluded_lines": [], "functions": {"TestRetryPolicy.test_default_policy": {"executed_lines": [31, 33, 34, 35, 36, 37], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestRetryPolicy.test_calculate_delay_exponential_backoff": {"executed_lines": [41, 46, 49, 52, 55], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "TestRetryPolicy.test_calculate_delay_respects_max": {"executed_lines": [59, 64, 65], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestRetryPolicy.test_should_retry_within_limit": {"executed_lines": [69, 71, 72, 73], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "TestRetryPolicy.test_should_retry_exceeds_limit": {"executed_lines": [77, 79, 80], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestRetryPolicy.test_should_retry_with_retryable_errors": {"executed_lines": [84, 86, 87, 88], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "TestRetryPolicy.test_predefined_policies": {"executed_lines": [92, 94, 95, 97, 98], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestTask.test_task_creation": {"executed_lines": [106, 108, 109, 110, 111, 112, 113], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "TestTask.test_task_to_dict": {"executed_lines": [117, 125, 127, 128, 129, 130, 131, 132], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 115}, "TestTask.test_task_from_dict": {"executed_lines": [136, 154, 156, 157, 158, 159, 160], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 134}, "TestTaskStatus.test_all_statuses": {"executed_lines": [168, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 166}, "TestTaskPriority.test_priority_order": {"executed_lines": [182, 183, 184], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestQueueHealth.test_healthy_queue": {"executed_lines": [192, 200, 201], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 190}, "TestQueueHealth.test_unhealthy_queue_with_issues": {"executed_lines": [205, 213, 219, 221, 222], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "TestQueueHealth.test_to_dict": {"executed_lines": [226, 228, 230, 231, 232, 233], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestAsyncTaskQueue.test_queue_initialization": {"executed_lines": [241, 248, 249, 250, 253, 254, 255], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 239}, "TestAsyncTaskQueue.test_queue_names_by_priority": {"executed_lines": [259, 261, 262, 263, 264], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 257}, "TestTaskLifecycle.test_lifecycle_states": {"executed_lines": [272, 282, 284], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 270}, "TestTaskLifecycle.test_task_state_transitions": {"executed_lines": [289, 290, 293, 294, 295, 298, 299, 300, 301], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 286}, "TestRetryLogic.test_retry_delay_progression": {"executed_lines": [309, 313, 316, 317], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307}, "TestRetryLogic.test_max_delay_cap": {"executed_lines": [321, 326, 327], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 319}, "TestAsyncTaskQueueIntegration.queue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [339, 341], "excluded_lines": [], "start_line": 337}, "TestAsyncTaskQueueIntegration.test_enqueue_dequeue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [347], "excluded_lines": [], "start_line": 344}, "TestAsyncTaskQueueIntegration.test_retry_mechanism": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [352], "excluded_lines": [], "start_line": 350}, "TestAsyncTaskQueueIntegration.test_dead_letter_queue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [357], "excluded_lines": [], "start_line": 355}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 26, 29, 39, 57, 67, 75, 82, 90, 101, 104, 115, 134, 163, 166, 177, 180, 187, 190, 203, 224, 236, 239, 257, 267, 270, 286, 304, 307, 319, 332, 333, 336, 337, 343, 344, 349, 350, 354, 355], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestRetryPolicy": {"executed_lines": [31, 33, 34, 35, 36, 37, 41, 46, 49, 52, 55, 59, 64, 65, 69, 71, 72, 73, 77, 79, 80, 84, 86, 87, 88, 92, 94, 95, 97, 98], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestTask": {"executed_lines": [106, 108, 109, 110, 111, 112, 113, 117, 125, 127, 128, 129, 130, 131, 132, 136, 154, 156, 157, 158, 159, 160], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "TestTaskStatus": {"executed_lines": [168, 169, 170, 171, 172, 173, 174], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "TestTaskPriority": {"executed_lines": [182, 183, 184], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 177}, "TestQueueHealth": {"executed_lines": [192, 200, 201, 205, 213, 219, 221, 222, 226, 228, 230, 231, 232, 233], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 187}, "TestAsyncTaskQueue": {"executed_lines": [241, 248, 249, 250, 253, 254, 255, 259, 261, 262, 263, 264], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 236}, "TestTaskLifecycle": {"executed_lines": [272, 282, 284, 289, 290, 293, 294, 295, 298, 299, 300, 301], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 267}, "TestRetryLogic": {"executed_lines": [309, 313, 316, 317, 321, 326, 327], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "TestAsyncTaskQueueIntegration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [339, 341, 347, 352, 357], "excluded_lines": [], "start_line": 333}, "": {"executed_lines": [7, 8, 9, 10, 11, 13, 26, 29, 39, 57, 67, 75, 82, 90, 101, 104, 115, 134, 163, 166, 177, 180, 187, 190, 203, 224, 236, 239, 257, 267, 270, 286, 304, 307, 319, 332, 333, 336, 337, 343, 344, 349, 350, 354, 355], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_queue_enhanced_coverage.py": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 29, 31, 32, 33, 34, 35, 36, 37, 38, 41, 44, 45, 47, 49, 50, 52, 53, 55, 56, 57, 59, 60, 62, 64, 65, 66, 68, 69, 70, 72, 73, 75, 76, 78, 79, 81, 82, 83, 86, 87, 88, 90, 91, 93, 94, 97, 101, 102, 104, 106, 107, 108, 109, 110, 112, 113, 115, 117, 118, 120, 121, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 139, 140, 142, 143, 144, 146, 148, 149, 150, 152, 153, 155, 157, 158, 160, 162, 164, 165, 167, 168, 170, 171, 172, 173, 175, 177, 178, 180, 181, 183, 184, 186, 187, 188, 190, 192, 193, 194, 196, 197, 199, 200, 202, 203, 205, 206, 207, 209, 210, 212, 213, 214, 216, 218, 219, 220, 221, 223, 224, 226, 227, 228, 230, 232, 233, 234, 236, 237, 239, 240, 241, 243, 244, 246, 247, 250, 256, 257, 261, 262, 266, 267, 268, 270, 271, 274, 282, 285, 288, 294, 296, 297, 298, 299, 300, 301, 302, 304, 305, 308, 309, 311, 316, 317, 318, 321, 324, 325, 326, 327, 328, 329, 330, 332, 333, 334, 335, 336, 337, 338, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 353, 354, 356, 357, 358, 359, 360, 361, 362, 364, 365, 367, 368, 369, 372, 373, 375, 376, 378, 379], "summary": {"covered_lines": 233, "num_statements": 233, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"AsyncIter.__init__": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "AsyncIter.__aiter__": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "AsyncIter.__anext__": {"executed_lines": [36, 37, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestAsyncTaskQueueCoverage.mock_redis": {"executed_lines": [47, 49, 50], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestAsyncTaskQueueCoverage.queue": {"executed_lines": [55, 56, 57], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestAsyncTaskQueueCoverage.test_connect_disconnect": {"executed_lines": [62, 64, 65, 66, 68, 69, 70, 72, 73], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestAsyncTaskQueueCoverage.test_enqueue": {"executed_lines": [78, 79, 81, 82, 83, 86, 87, 88], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "TestAsyncTaskQueueCoverage.test_dequeue_success": {"executed_lines": [93, 94, 97, 101, 102, 104, 106, 107, 108, 109, 110], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 91}, "TestAsyncTaskQueueCoverage.test_dequeue_empty": {"executed_lines": [115, 117, 118], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "TestAsyncTaskQueueCoverage.test_complete": {"executed_lines": [123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "TestAsyncTaskQueueCoverage.test_fail_retry": {"executed_lines": [142, 143, 144, 146, 148, 149, 150], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestAsyncTaskQueueCoverage.test_fail_dead_letter": {"executed_lines": [155, 157, 158, 160, 162, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestAsyncTaskQueueCoverage.test_fail_no_dead_letter": {"executed_lines": [170, 171, 172, 173, 175, 177, 178], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 168}, "TestAsyncTaskQueueCoverage.test_process_retry_queue": {"executed_lines": [183, 184, 186, 187, 188, 190, 192, 193, 194, 196, 197], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 181}, "TestAsyncTaskQueueCoverage.test_get_dead_letter_tasks": {"executed_lines": [202, 203, 205, 206, 207], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestAsyncTaskQueueCoverage.test_reprocess_dead_letter_task": {"executed_lines": [212, 213, 214, 216, 218, 219, 220, 221], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 210}, "TestAsyncTaskQueueCoverage.test_cancel_success": {"executed_lines": [226, 227, 228, 230, 232, 233, 234], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestAsyncTaskQueueCoverage.test_cancel_already_processing": {"executed_lines": [239, 240, 241, 243, 244], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 237}, "TestAsyncTaskQueueCoverage.test_list_tasks": {"executed_lines": [250, 256, 257, 261, 262, 266, 267, 268], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 247}, "TestAsyncTaskQueueCoverage.test_get_queue_health_comprehensive": {"executed_lines": [274, 282, 285, 288, 294, 296, 297, 298, 299, 300, 301, 302], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 271}, "TestAsyncTaskQueueCoverage.test_cleanup_old_tasks": {"executed_lines": [308, 309, 311, 316, 317, 318], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "TestGlobalTaskQueueFunctions.test_enqueue_task": {"executed_lines": [327, 328, 329, 330], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 326}, "TestGlobalTaskQueueFunctions.test_get_task_status": {"executed_lines": [335, 336, 337, 338], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "TestGlobalTaskQueueFunctions.test_cancel_task": {"executed_lines": [343, 344, 345, 346], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestGlobalTaskQueueFunctions.test_get_queue_stats": {"executed_lines": [351, 352, 353, 354], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 350}, "TestGlobalTaskQueueFunctions.test_get_queue_health": {"executed_lines": [359, 360, 361, 362], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 358}, "TestGlobalTaskQueueFunctions.test_get_task_queue_singleton": {"executed_lines": [367, 368, 369, 372, 373, 375, 376, 378, 379], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 29, 31, 33, 35, 41, 44, 45, 52, 53, 59, 60, 75, 76, 90, 91, 112, 113, 120, 121, 139, 140, 152, 153, 167, 168, 180, 181, 199, 200, 209, 210, 223, 224, 236, 237, 246, 247, 270, 271, 304, 305, 321, 324, 325, 326, 332, 333, 334, 340, 341, 342, 348, 349, 350, 356, 357, 358, 364, 365], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AsyncIter": {"executed_lines": [32, 34, 36, 37, 38], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "TestAsyncTaskQueueCoverage": {"executed_lines": [47, 49, 50, 55, 56, 57, 62, 64, 65, 66, 68, 69, 70, 72, 73, 78, 79, 81, 82, 83, 86, 87, 88, 93, 94, 97, 101, 102, 104, 106, 107, 108, 109, 110, 115, 117, 118, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146, 148, 149, 150, 155, 157, 158, 160, 162, 164, 165, 170, 171, 172, 173, 175, 177, 178, 183, 184, 186, 187, 188, 190, 192, 193, 194, 196, 197, 202, 203, 205, 206, 207, 212, 213, 214, 216, 218, 219, 220, 221, 226, 227, 228, 230, 232, 233, 234, 239, 240, 241, 243, 244, 250, 256, 257, 261, 262, 266, 267, 268, 274, 282, 285, 288, 294, 296, 297, 298, 299, 300, 301, 302, 308, 309, 311, 316, 317, 318], "summary": {"covered_lines": 132, "num_statements": 132, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestGlobalTaskQueueFunctions": {"executed_lines": [327, 328, 329, 330, 335, 336, 337, 338, 343, 344, 345, 346, 351, 352, 353, 354, 359, 360, 361, 362, 367, 368, 369, 372, 373, 375, 376, 378, 379], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "": {"executed_lines": [6, 7, 8, 9, 10, 11, 12, 13, 29, 31, 33, 35, 41, 44, 45, 52, 53, 59, 60, 75, 76, 90, 91, 112, 113, 120, 121, 139, 140, 152, 153, 167, 168, 180, 181, 199, 200, 209, 210, 223, 224, 236, 237, 246, 247, 270, 271, 304, 305, 321, 324, 325, 326, 332, 333, 334, 340, 341, 342, 348, 349, 350, 356, 357, 358, 364, 365], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_queue_module_coverage.py": {"executed_lines": [7, 8, 9, 10, 11, 14, 17, 19, 21, 22, 23, 24, 25, 28, 31, 33, 35, 36, 37, 38, 41, 44, 46, 48, 56, 57, 58, 60, 62, 64, 66, 68, 69, 70, 71, 73, 75, 77, 79, 80, 81, 82, 85, 88, 89, 91, 93, 97, 98, 99, 101, 102, 104, 106, 108, 109, 111, 112, 114, 116, 117, 119, 120, 122, 124, 125, 127, 129, 130, 132, 134, 136, 137, 139, 141, 142, 144, 145, 147, 150, 153, 154, 156, 158, 160, 161, 162, 163, 164, 166, 170, 171, 173, 174, 176, 178, 180, 181, 182, 183, 184, 186, 188, 191, 194, 195, 197, 199, 201, 212, 213, 214, 215, 216, 217, 219, 221, 223, 224, 226, 228, 230, 231, 232, 233, 235, 237, 240, 243, 244, 246, 248, 250, 261, 262, 263, 264, 265, 267, 269, 271, 272, 274, 276, 278, 289, 290, 291, 292, 293, 294, 296, 298, 300, 301, 303, 305, 307, 318, 319, 320, 321, 322, 324, 326, 328, 329, 331, 333, 335, 336, 337, 338, 340, 342, 344, 345, 347, 349, 351, 360, 361, 362, 363, 364, 365, 367, 369, 371, 372, 374, 376, 378, 387, 388, 389, 390, 392, 394, 397, 400, 401, 403, 405, 407, 409, 410, 411, 412, 414, 416, 418, 419, 421, 423, 425, 426, 427, 428, 430, 432, 434, 435, 437, 439, 441, 443, 444, 446, 447, 449, 450, 451, 453, 455, 457, 458, 460, 462, 464, 466, 467, 469, 470, 472, 473, 474, 476, 478, 481, 484, 485, 487, 489, 491, 493, 494, 496, 497, 499, 500, 501, 502, 504, 506, 507, 508, 511, 514, 515, 517, 519, 521, 522, 523, 524, 526, 528, 530, 531, 533, 534, 536, 538, 539, 540, 543, 545, 547, 549, 550, 552, 554, 556, 557, 558, 559, 561, 563, 565, 566, 568, 570, 572, 573, 574, 575, 577, 579, 581, 582, 584, 586, 588, 589, 590, 591, 593, 595, 598, 601, 603, 605, 607, 608, 609, 610, 613], "summary": {"covered_lines": 328, "num_statements": 329, "percent_covered": 99.69604863221885, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.69604863221885, "percent_statements_covered_display": "99"}, "missing_lines": [614], "excluded_lines": [], "functions": {"TestTaskStatus.test_task_status_values": {"executed_lines": [19, 21, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestTaskPriority.test_task_priority_values": {"executed_lines": [33, 35, 36, 37, 38], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "TestTask.test_task_creation": {"executed_lines": [46, 48, 56, 57, 58], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestTask.test_task_to_dict": {"executed_lines": [62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "TestTask.test_task_default_values": {"executed_lines": [75, 77, 79, 80, 81, 82], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "TestAsyncTaskQueue.test_task_queue_init": {"executed_lines": [91, 93, 97, 98, 99], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "TestAsyncTaskQueue.test_task_queue_default_values": {"executed_lines": [104, 106, 108, 109], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "TestAsyncTaskQueue.test_task_queue_connect": {"executed_lines": [114, 116, 117, 119, 120, 122], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "TestAsyncTaskQueue.test_task_queue_disconnect": {"executed_lines": [127, 129, 130, 132, 134], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "TestAsyncTaskQueue.test_task_queue_get_redis": {"executed_lines": [139, 141, 142, 144, 145, 147], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "TestAsyncTaskQueueEnqueue.test_enqueue": {"executed_lines": [156, 158, 160, 161, 162, 163, 164, 166, 170, 171], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 154}, "TestAsyncTaskQueueEnqueue.test_enqueue_with_custom_retries": {"executed_lines": [176, 178, 180, 181, 182, 183, 184, 186, 188], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "TestAsyncTaskQueueDequeue.test_dequeue": {"executed_lines": [197, 199, 201, 212, 213, 214, 215, 216, 217, 219, 221], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestAsyncTaskQueueDequeue.test_dequeue_empty_queue": {"executed_lines": [226, 228, 230, 231, 232, 233, 235, 237], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 224}, "TestAsyncTaskQueueComplete.test_complete": {"executed_lines": [246, 248, 250, 261, 262, 263, 264, 265, 267, 269], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestAsyncTaskQueueComplete.test_fail_with_retry": {"executed_lines": [274, 276, 278, 289, 290, 291, 292, 293, 294, 296, 298], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 272}, "TestAsyncTaskQueueComplete.test_fail_without_retry": {"executed_lines": [303, 305, 307, 318, 319, 320, 321, 322, 324, 326], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "TestAsyncTaskQueueComplete.test_fail_no_task": {"executed_lines": [331, 333, 335, 336, 337, 338, 340, 342], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestAsyncTaskQueueComplete.test_cancel_queued_task": {"executed_lines": [347, 349, 351, 360, 361, 362, 363, 364, 365, 367, 369], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345}, "TestAsyncTaskQueueComplete.test_cancel_non_queued_task": {"executed_lines": [374, 376, 378, 387, 388, 389, 390, 392, 394], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 372}, "TestAsyncTaskQueueStatus.test_get_status": {"executed_lines": [403, 405, 407, 409, 410, 411, 412, 414, 416], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestAsyncTaskQueueStatus.test_get_status_not_found": {"executed_lines": [421, 423, 425, 426, 427, 428, 430, 432], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 419}, "TestAsyncTaskQueueStatus.test_list_tasks": {"executed_lines": [437, 439, 441, 443, 444, 446, 449, 450, 451, 453, 455], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "TestAsyncTaskQueueStatus.test_list_tasks.mock_scan_iter": {"executed_lines": [447], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 446}, "TestAsyncTaskQueueStatus.test_list_tasks_filtered": {"executed_lines": [460, 462, 464, 466, 467, 469, 472, 473, 474, 476, 478], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 458}, "TestAsyncTaskQueueStatus.test_list_tasks_filtered.mock_scan_iter": {"executed_lines": [470], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 469}, "TestAsyncTaskQueueStats.test_get_queue_stats": {"executed_lines": [487, 489, 491, 493, 494, 496, 499, 500, 501, 502, 504, 506, 507, 508], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 485}, "TestAsyncTaskQueueStats.test_get_queue_stats.mock_scan_iter": {"executed_lines": [497], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 496}, "TestModuleFunctions.test_get_task_queue": {"executed_lines": [517, 519, 521, 522, 523, 524, 526, 528], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 515}, "TestModuleFunctions.test_enqueue_task": {"executed_lines": [533, 534, 536, 538, 539, 540, 543, 545, 547], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 531}, "TestModuleFunctions.test_get_task_status": {"executed_lines": [552, 554, 556, 557, 558, 559, 561, 563], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 550}, "TestModuleFunctions.test_cancel_task": {"executed_lines": [568, 570, 572, 573, 574, 575, 577, 579], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 566}, "TestModuleFunctions.test_get_queue_stats_function": {"executed_lines": [584, 586, 588, 589, 590, 591, 593, 595], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 582}, "TestQueueNames.test_queue_names": {"executed_lines": [603, 605, 607, 608, 609, 610], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 601}, "": {"executed_lines": [7, 8, 9, 10, 11, 14, 17, 28, 31, 41, 44, 60, 73, 85, 88, 89, 101, 102, 111, 112, 124, 125, 136, 137, 150, 153, 154, 173, 174, 191, 194, 195, 223, 224, 240, 243, 244, 271, 272, 300, 301, 328, 329, 344, 345, 371, 372, 397, 400, 401, 418, 419, 434, 435, 457, 458, 481, 484, 485, 511, 514, 515, 530, 531, 549, 550, 565, 566, 581, 582, 598, 601, 613], "summary": {"covered_lines": 73, "num_statements": 74, "percent_covered": 98.64864864864865, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.64864864864865, "percent_statements_covered_display": "99"}, "missing_lines": [614], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTaskStatus": {"executed_lines": [19, 21, 22, 23, 24, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "TestTaskPriority": {"executed_lines": [33, 35, 36, 37, 38], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "TestTask": {"executed_lines": [46, 48, 56, 57, 58, 62, 64, 66, 68, 69, 70, 71, 75, 77, 79, 80, 81, 82], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestAsyncTaskQueue": {"executed_lines": [91, 93, 97, 98, 99, 104, 106, 108, 109, 114, 116, 117, 119, 120, 122, 127, 129, 130, 132, 134, 139, 141, 142, 144, 145, 147], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "TestAsyncTaskQueueEnqueue": {"executed_lines": [156, 158, 160, 161, 162, 163, 164, 166, 170, 171, 176, 178, 180, 181, 182, 183, 184, 186, 188], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestAsyncTaskQueueDequeue": {"executed_lines": [197, 199, 201, 212, 213, 214, 215, 216, 217, 219, 221, 226, 228, 230, 231, 232, 233, 235, 237], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 191}, "TestAsyncTaskQueueComplete": {"executed_lines": [246, 248, 250, 261, 262, 263, 264, 265, 267, 269, 274, 276, 278, 289, 290, 291, 292, 293, 294, 296, 298, 303, 305, 307, 318, 319, 320, 321, 322, 324, 326, 331, 333, 335, 336, 337, 338, 340, 342, 347, 349, 351, 360, 361, 362, 363, 364, 365, 367, 369, 374, 376, 378, 387, 388, 389, 390, 392, 394], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "TestAsyncTaskQueueStatus": {"executed_lines": [403, 405, 407, 409, 410, 411, 412, 414, 416, 421, 423, 425, 426, 427, 428, 430, 432, 437, 439, 441, 443, 444, 446, 447, 449, 450, 451, 453, 455, 460, 462, 464, 466, 467, 469, 470, 472, 473, 474, 476, 478], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397}, "TestAsyncTaskQueueStats": {"executed_lines": [487, 489, 491, 493, 494, 496, 497, 499, 500, 501, 502, 504, 506, 507, 508], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 481}, "TestModuleFunctions": {"executed_lines": [517, 519, 521, 522, 523, 524, 526, 528, 533, 534, 536, 538, 539, 540, 543, 545, 547, 552, 554, 556, 557, 558, 559, 561, 563, 568, 570, 572, 573, 574, 575, 577, 579, 584, 586, 588, 589, 590, 591, 593, 595], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 511}, "TestQueueNames": {"executed_lines": [603, 605, 607, 608, 609, 610], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 598}, "": {"executed_lines": [7, 8, 9, 10, 11, 14, 17, 28, 31, 41, 44, 60, 73, 85, 88, 89, 101, 102, 111, 112, 124, 125, 136, 137, 150, 153, 154, 173, 174, 191, 194, 195, 223, 224, 240, 243, 244, 271, 272, 300, 301, 328, 329, 344, 345, 371, 372, 397, 400, 401, 418, 419, 434, 435, 457, 458, 481, 484, 485, 511, 514, 515, 530, 531, 549, 550, 565, 566, 581, 582, 598, 601, 613], "summary": {"covered_lines": 73, "num_statements": 74, "percent_covered": 98.64864864864865, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.64864864864865, "percent_statements_covered_display": "99"}, "missing_lines": [614], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_queue_service_coverage.py": {"executed_lines": [5, 6, 7, 8, 9, 21, 24, 25, 26, 27, 28, 29, 32, 35, 36, 37, 38, 39, 42, 45, 46, 51, 52, 53, 54, 55, 57, 58, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 85, 86, 87, 90, 93, 94, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 109, 110, 111, 113, 114, 115, 120, 121, 122, 123, 125, 126, 127, 132, 134, 135, 136, 137, 138, 140, 141, 142, 143, 153, 154, 156, 157, 158, 159, 161, 162, 163, 164, 174, 176, 177, 179, 180, 181, 182, 192, 194, 195, 196, 198, 199, 200, 201, 211, 213, 214, 216, 217, 218, 219, 229, 231, 232, 234, 235, 236, 237, 247, 249, 250, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 265, 266, 268, 269, 270, 273, 274, 276, 277, 279, 280, 281, 283, 284, 285, 287, 288, 290, 291, 293, 294, 296, 297, 299, 300, 301, 304, 305, 308, 310, 314, 315, 318, 321, 322, 323, 324, 325, 326, 329, 332, 333, 334, 335, 336, 337, 339, 340, 341, 343, 344, 345, 346, 347, 348, 350, 351, 353, 354, 355, 356, 357, 358, 360, 361, 363, 364, 365, 366, 367, 368, 370, 371], "summary": {"covered_lines": 205, "num_statements": 205, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestTaskStatus.test_task_status_values": {"executed_lines": [25, 26, 27, 28, 29], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "TestTaskPriority.test_task_priority_values": {"executed_lines": [36, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "TestTask.test_task_creation": {"executed_lines": [46, 51, 52, 53, 54, 55], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestTask.test_task_to_dict": {"executed_lines": [58, 67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestTask.test_task_to_dict_with_timestamps": {"executed_lines": [76, 77, 78, 85, 86, 87], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "TestAsyncTaskQueue.mock_redis": {"executed_lines": [96, 97, 98, 99, 100, 101, 102, 103, 104], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "TestAsyncTaskQueue.queue": {"executed_lines": [109, 110, 111], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestAsyncTaskQueue.test_enqueue_creates_task": {"executed_lines": [115, 120, 121, 122, 123], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "TestAsyncTaskQueue.test_enqueue_with_custom_max_retries": {"executed_lines": [127, 132], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "TestAsyncTaskQueue.test_dequeue_empty_queue": {"executed_lines": [136, 137, 138], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 135}, "TestAsyncTaskQueue.test_dequeue_with_task": {"executed_lines": [142, 143, 153, 154, 156, 157, 158, 159], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 141}, "TestAsyncTaskQueue.test_complete": {"executed_lines": [163, 164, 174, 176, 177], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "TestAsyncTaskQueue.test_fail_with_retry": {"executed_lines": [181, 182, 192, 194, 195, 196], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "TestAsyncTaskQueue.test_fail_without_retry": {"executed_lines": [200, 201, 211, 213, 214], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 199}, "TestAsyncTaskQueue.test_cancel_queued_task": {"executed_lines": [218, 219, 229, 231, 232], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 217}, "TestAsyncTaskQueue.test_cancel_processing_task_fails": {"executed_lines": [236, 237, 247, 249, 250], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 235}, "TestAsyncTaskQueue.test_get_status_returns_task": {"executed_lines": [254, 255, 256, 258, 259, 260], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 253}, "TestAsyncTaskQueue.test_get_status_returns_none_for_missing": {"executed_lines": [264, 265, 266], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 263}, "TestAsyncTaskQueue.test_list_tasks": {"executed_lines": [270, 273, 276, 277, 279, 280, 281], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 269}, "TestAsyncTaskQueue.test_list_tasks.async_iter": {"executed_lines": [274], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 273}, "TestAsyncTaskQueue.test_list_tasks_filtered_by_status": {"executed_lines": [285, 287, 290, 291, 293, 294, 296, 297], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 284}, "TestAsyncTaskQueue.test_list_tasks_filtered_by_status.async_iter": {"executed_lines": [288], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 287}, "TestAsyncTaskQueue.test_get_queue_stats": {"executed_lines": [301, 304, 308, 310, 314, 315], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "TestAsyncTaskQueue.test_get_queue_stats.empty_async_iter": {"executed_lines": [305], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 304}, "TestQueueNames.test_queue_names_exist": {"executed_lines": [322, 323, 324, 325, 326], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestConvenienceFunctions.test_enqueue_task_uses_global_queue": {"executed_lines": [335, 336, 337, 339, 340, 341], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "TestConvenienceFunctions.test_get_task_status_uses_global_queue": {"executed_lines": [346, 347, 348, 350, 351], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345}, "TestConvenienceFunctions.test_cancel_task_uses_global_queue": {"executed_lines": [356, 357, 358, 360, 361], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 355}, "TestConvenienceFunctions.test_get_queue_stats_uses_global_queue": {"executed_lines": [366, 367, 368, 370, 371], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 365}, "": {"executed_lines": [5, 6, 7, 8, 9, 21, 24, 32, 35, 42, 45, 57, 75, 90, 93, 94, 106, 107, 113, 114, 125, 126, 134, 135, 140, 141, 161, 162, 179, 180, 198, 199, 216, 217, 234, 235, 252, 253, 262, 263, 268, 269, 283, 284, 299, 300, 318, 321, 329, 332, 333, 334, 343, 344, 345, 353, 354, 355, 363, 364, 365], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTaskStatus": {"executed_lines": [25, 26, 27, 28, 29], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestTaskPriority": {"executed_lines": [36, 37, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestTask": {"executed_lines": [46, 51, 52, 53, 54, 55, 58, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 85, 86, 87], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestAsyncTaskQueue": {"executed_lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 109, 110, 111, 115, 120, 121, 122, 123, 127, 132, 136, 137, 138, 142, 143, 153, 154, 156, 157, 158, 159, 163, 164, 174, 176, 177, 181, 182, 192, 194, 195, 196, 200, 201, 211, 213, 214, 218, 219, 229, 231, 232, 236, 237, 247, 249, 250, 254, 255, 256, 258, 259, 260, 264, 265, 266, 270, 273, 274, 276, 277, 279, 280, 281, 285, 287, 288, 290, 291, 293, 294, 296, 297, 301, 304, 305, 308, 310, 314, 315], "summary": {"covered_lines": 89, "num_statements": 89, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestQueueNames": {"executed_lines": [322, 323, 324, 325, 326], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 318}, "TestConvenienceFunctions": {"executed_lines": [335, 336, 337, 339, 340, 341, 346, 347, 348, 350, 351, 356, 357, 358, 360, 361, 366, 367, 368, 370, 371], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "": {"executed_lines": [5, 6, 7, 8, 9, 21, 24, 32, 35, 42, 45, 57, 75, 90, 93, 94, 106, 107, 113, 114, 125, 126, 134, 135, 140, 141, 161, 162, 179, 180, 198, 199, 216, 217, 234, 235, 252, 253, 262, 263, 268, 269, 283, 284, 299, 300, 318, 321, 329, 332, 333, 334, 343, 344, 345, 353, 354, 355, 363, 364, 365], "summary": {"covered_lines": 61, "num_statements": 61, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_task_worker_coverage.py": {"executed_lines": [5, 6, 7, 9, 14, 17, 20, 21, 23, 24, 25, 26, 27, 29, 30, 32, 34, 36, 38, 39, 40, 41, 42, 44, 46, 48, 50, 51, 53, 55, 56, 58, 59, 61, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 79, 80, 82, 84, 86, 87, 88, 89, 91, 92, 94, 96, 97, 99, 101, 102, 104, 105, 107, 108, 111, 112, 120, 123, 125, 126, 128, 131, 132, 133, 135, 136, 138, 141, 142, 146, 148, 150, 153, 155, 156, 158, 159, 163, 164, 172, 175, 177, 178, 180, 182, 183, 185, 186, 188, 189, 191, 192, 194, 195, 199, 202, 204, 207, 209, 212, 215, 216, 218, 221, 222, 224, 225, 226, 228, 229, 231, 233, 234, 236, 237, 240, 243, 244, 246, 247, 248, 249, 251, 253, 255, 257, 259, 261, 262, 264, 265, 266, 267, 269, 271, 273, 274, 276, 278, 279, 281, 283, 284, 286, 287, 289, 290, 292, 294, 295, 297, 298, 299, 300, 302, 303, 306, 307, 308, 310, 311, 314, 316, 317, 319, 320, 322, 323, 324, 325, 327, 329, 330, 332, 334, 335, 337, 338, 339, 341, 342, 343, 345, 348, 349, 350, 352, 353, 356], "summary": {"covered_lines": 200, "num_statements": 205, "percent_covered": 97.5609756097561, "percent_covered_display": "98", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 97.5609756097561, "percent_statements_covered_display": "98"}, "missing_lines": [116, 118, 168, 170, 200], "excluded_lines": [], "functions": {"TestTaskWorker.mock_queue": {"executed_lines": [23, 24, 25, 26, 27], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "TestTaskWorker.worker": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "TestTaskWorker.test_init": {"executed_lines": [36, 38, 39, 40, 41, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestTaskWorker.test_register_handler": {"executed_lines": [46, 48, 50, 51], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "TestTaskWorker.test_register_multiple_handlers": {"executed_lines": [55, 56, 58, 59, 61, 62, 63], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "TestTaskWorker.test_process_task_success": {"executed_lines": [68, 70, 71, 73, 75, 76, 77], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "TestTaskWorker.test_process_task_no_handler": {"executed_lines": [82, 84, 86, 87, 88, 89], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "TestTaskWorker.test_process_task_handler_exception": {"executed_lines": [94, 96, 97, 99, 101, 102], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "TestTaskWorker.test_worker_loop_no_tasks": {"executed_lines": [107, 108, 111, 112, 120, 123], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [116, 118], "excluded_lines": [], "start_line": 105}, "TestTaskWorker.test_worker_loop_with_task": {"executed_lines": [128, 131, 132, 133, 135, 136, 138, 141, 142, 146, 148, 150, 153], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "TestTaskWorker.test_worker_loop_handles_cancellation": {"executed_lines": [158, 159, 163, 164, 172, 175], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [168, 170], "excluded_lines": [], "start_line": 156}, "TestTaskWorker.test_start": {"executed_lines": [180, 182, 183], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 178}, "TestTaskWorker.test_stop": {"executed_lines": [188, 189, 191, 192], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 186}, "TestTaskWorker.test_stop_timeout": {"executed_lines": [199, 202, 204, 207, 209], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 195}, "TestTaskWorker.test_stop_timeout.long_running": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [200], "excluded_lines": [], "start_line": 199}, "TestModuleFunctions.test_handle_conversion_task": {"executed_lines": [218, 221, 222, 224, 225, 226], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "TestModuleFunctions.test_handle_asset_conversion_task": {"executed_lines": [231, 233, 234, 236, 237], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "TestEdgeCases.test_worker_with_multiple_workers": {"executed_lines": [246, 247, 248, 249, 251, 253, 255, 257, 259], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 244}, "TestEdgeCases.test_process_task_with_retryable_error": {"executed_lines": [264, 265, 266, 267, 269, 271, 273, 274, 276, 278, 279], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 262}, "TestEdgeCases.test_register_handler_overwrites": {"executed_lines": [283, 284, 286, 287, 289, 290, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 281}, "TestEdgeCases.test_worker_loop_dequeue_exception": {"executed_lines": [297, 298, 299, 300, 302, 303, 306, 310, 311, 314], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 295}, "TestEdgeCases.test_worker_loop_dequeue_exception.stop_after_delay": {"executed_lines": [307, 308], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 306}, "TestEdgeCases.test_start_stop_rapid": {"executed_lines": [319, 320, 322, 323, 324, 325, 327], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 317}, "TestEdgeCases.test_worker_loop_processes_multiple_tasks": {"executed_lines": [332, 334, 335, 337, 338, 339, 341, 342, 343, 345, 348, 352, 353, 356], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 330}, "TestEdgeCases.test_worker_loop_processes_multiple_tasks.stop_after_delay": {"executed_lines": [349, 350], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 348}, "": {"executed_lines": [5, 6, 7, 9, 14, 17, 20, 21, 29, 30, 34, 44, 53, 65, 66, 79, 80, 91, 92, 104, 105, 125, 126, 155, 156, 177, 178, 185, 186, 194, 195, 212, 215, 216, 228, 229, 240, 243, 244, 261, 262, 281, 294, 295, 316, 317, 329, 330], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTaskWorker": {"executed_lines": [23, 24, 25, 26, 27, 32, 36, 38, 39, 40, 41, 42, 46, 48, 50, 51, 55, 56, 58, 59, 61, 62, 63, 68, 70, 71, 73, 75, 76, 77, 82, 84, 86, 87, 88, 89, 94, 96, 97, 99, 101, 102, 107, 108, 111, 112, 120, 123, 128, 131, 132, 133, 135, 136, 138, 141, 142, 146, 148, 150, 153, 158, 159, 163, 164, 172, 175, 180, 182, 183, 188, 189, 191, 192, 199, 202, 204, 207, 209], "summary": {"covered_lines": 79, "num_statements": 84, "percent_covered": 94.04761904761905, "percent_covered_display": "94", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 94.04761904761905, "percent_statements_covered_display": "94"}, "missing_lines": [116, 118, 168, 170, 200], "excluded_lines": [], "start_line": 17}, "TestModuleFunctions": {"executed_lines": [218, 221, 222, 224, 225, 226, 231, 233, 234, 236, 237], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 212}, "TestEdgeCases": {"executed_lines": [246, 247, 248, 249, 251, 253, 255, 257, 259, 264, 265, 266, 267, 269, 271, 273, 274, 276, 278, 279, 283, 284, 286, 287, 289, 290, 292, 297, 298, 299, 300, 302, 303, 306, 307, 308, 310, 311, 314, 319, 320, 322, 323, 324, 325, 327, 332, 334, 335, 337, 338, 339, 341, 342, 343, 345, 348, 349, 350, 352, 353, 356], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "": {"executed_lines": [5, 6, 7, 9, 14, 17, 20, 21, 29, 30, 34, 44, 53, 65, 66, 79, 80, 91, 92, 104, 105, 125, 126, 155, 156, 177, 178, 185, 186, 194, 195, 212, 215, 216, 228, 229, 240, 243, 244, 261, 262, 281, 294, 295, 316, 317, 329, 330], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_temp_file_manager_coverage.py": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 22, 24, 26, 27, 28, 29, 30, 31, 33, 35, 37, 47, 48, 49, 52, 55, 57, 59, 67, 68, 70, 72, 74, 82, 84, 85, 86, 87, 90, 93, 95, 96, 99, 100, 101, 103, 105, 107, 108, 110, 111, 114, 116, 118, 120, 121, 123, 124, 125, 127, 129, 130, 134, 135, 138, 139, 142, 143, 147, 150, 152, 154, 155, 156, 158, 159, 160, 162, 163, 165, 167, 169, 170, 171, 173, 174, 175, 177, 178, 181, 184, 186, 188, 189, 190, 192, 193, 195, 196, 198, 200, 202, 204, 206, 207, 209, 211, 213, 215, 217, 218, 220, 221, 223, 226, 228, 230, 232, 234, 235, 236, 238, 239, 240, 242, 244, 246, 248, 250, 252, 253, 255, 257, 259, 261, 263, 264, 266, 267, 268, 270, 272, 274, 276, 278, 279, 280, 289, 290, 292, 294, 296, 297, 301, 303, 305, 306, 307, 314, 315, 317, 319, 322, 325, 327, 329, 330, 331, 333, 334, 335, 336, 338, 340, 342, 344, 346, 348, 349, 350, 352, 354, 356, 358, 360, 362, 363, 365, 366, 367, 368, 369, 371, 373, 375, 377, 379, 381, 383, 384, 385, 387, 389, 391, 393, 395, 396, 397, 404, 405, 406, 407, 409, 411, 412, 413, 414, 415, 418, 421, 423, 425, 426, 427, 429, 431, 433, 435, 437, 439, 441, 442, 443, 445, 447, 450, 453, 455, 456, 458, 460, 462, 464, 465, 469, 470, 474, 476, 477, 478, 480, 481, 483, 484, 485, 488, 490, 492, 495, 498, 500, 502, 503, 505, 506, 507, 508, 510, 512, 514, 516, 519], "summary": {"covered_lines": 272, "num_statements": 280, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 97.14285714285714, "percent_statements_covered_display": "97"}, "missing_lines": [132, 136, 140, 144, 299, 467, 472, 520], "excluded_lines": [], "functions": {"TestTempFileConfig.test_temp_file_config_defaults": {"executed_lines": [22, 24, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "TestTempFileConfig.test_temp_file_config_custom": {"executed_lines": [35, 37, 47, 48, 49], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "TestTempFileInfo.test_temp_file_info_creation": {"executed_lines": [57, 59, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "TestTempFileInfo.test_temp_file_info_to_dict": {"executed_lines": [72, 74, 82, 84, 85, 86, 87], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "TestSecureTempFileManager.test_manager_init_default": {"executed_lines": [95, 96, 99, 100, 101, 103], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "TestSecureTempFileManager.test_manager_init_custom_config": {"executed_lines": [107, 108, 110, 111, 114, 116], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "TestSecureTempFileManager.test_manager_init_no_cleanup_on_exit": {"executed_lines": [120, 121, 123, 124, 125, 127], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "TestSecureTempFileManager.test_create_temp_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [132], "excluded_lines": [], "start_line": 130}, "TestSecureTempFileManager.test_create_temp_directory_with_prefix": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136], "excluded_lines": [], "start_line": 135}, "TestSecureTempFileManager.test_create_temp_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [140], "excluded_lines": [], "start_line": 139}, "TestSecureTempFileManager.test_create_temp_file_with_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [144], "excluded_lines": [], "start_line": 143}, "TestSecureTempFileManagerContextManagers.test_temp_directory_context_manager": {"executed_lines": [152, 154, 155, 156, 158, 159, 160, 162, 163], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "TestSecureTempFileManagerContextManagers.test_temp_file_context_manager": {"executed_lines": [167, 169, 170, 171, 173, 174, 175, 177, 178], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 165}, "TestSecureTempFileManagerCleanup.test_cleanup_directory_success": {"executed_lines": [186, 188, 189, 190, 192, 193, 195, 196, 198], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 184}, "TestSecureTempFileManagerCleanup.test_cleanup_directory_not_exists": {"executed_lines": [202, 204, 206, 207, 209, 211], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestSecureTempFileManagerCleanup.test_cleanup_directory_permission_error": {"executed_lines": [215, 217, 218, 220, 221, 223, 226, 228], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 213}, "TestSecureTempFileManagerCleanup.test_cleanup_file_success": {"executed_lines": [232, 234, 235, 236, 238, 239, 240, 242, 244], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 230}, "TestSecureTempFileManagerCleanup.test_cleanup_file_not_exists": {"executed_lines": [248, 250, 252, 253, 255, 257], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 246}, "TestSecureTempFileManagerCleanup.test_cleanup_file_error": {"executed_lines": [261, 263, 264, 266, 267, 268, 270, 272], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "TestSecureTempFileManagerCleanup.test_cleanup_job_files": {"executed_lines": [276, 278, 279, 280, 289, 290, 292, 294], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "TestSecureTempFileManagerCleanup.test_cleanup_old_files": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [299], "excluded_lines": [], "start_line": 297}, "TestSecureTempFileManagerCleanup.test_cleanup_all": {"executed_lines": [303, 305, 306, 307, 314, 315, 317, 319], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 301}, "TestSecureTempFileManagerStats.test_find_orphaned_files": {"executed_lines": [327, 329, 330, 331, 333, 334, 335, 336, 338, 340], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 325}, "TestSecureTempFileManagerStats.test_find_orphaned_files_base_not_exists": {"executed_lines": [344, 346, 348, 349, 350, 352, 354], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 342}, "TestSecureTempFileManagerStats.test_get_total_size": {"executed_lines": [358, 360, 362, 363, 365, 366, 367, 368, 369, 371, 373, 375], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 356}, "TestSecureTempFileManagerStats.test_get_total_size_base_not_exists": {"executed_lines": [379, 381, 383, 384, 385, 387, 389], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 377}, "TestSecureTempFileManagerStats.test_get_stats": {"executed_lines": [393, 395, 396, 397, 404, 405, 406, 407, 409, 411, 412, 413, 414, 415], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 391}, "TestSecureTempFileManagerBackground.test_start_background_cleanup": {"executed_lines": [423, 425, 426, 427, 429, 431, 433], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 421}, "TestSecureTempFileManagerBackground.test_stop_background_cleanup": {"executed_lines": [437, 439, 441, 442, 443, 445, 447], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 435}, "TestModuleFunctions.test_get_temp_file_manager": {"executed_lines": [455, 456, 458, 460, 462], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 453}, "TestModuleFunctions.test_create_temp_directory_function": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [467], "excluded_lines": [], "start_line": 465}, "TestModuleFunctions.test_cleanup_job_files_function": {"executed_lines": [476, 477, 478, 480, 481, 483, 484, 485, 488, 490, 492], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 474}, "TestCleanupOrphanedFiles.test_cleanup_orphaned_files": {"executed_lines": [500, 502, 503, 505, 506, 507, 508, 510, 512, 514, 516], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 498}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 33, 52, 55, 70, 90, 93, 105, 118, 129, 130, 134, 135, 138, 139, 142, 143, 147, 150, 165, 181, 184, 200, 213, 230, 246, 259, 274, 296, 297, 301, 322, 325, 342, 356, 377, 391, 418, 421, 435, 450, 453, 464, 465, 469, 470, 474, 495, 498, 519], "summary": {"covered_lines": 59, "num_statements": 60, "percent_covered": 98.33333333333333, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.33333333333333, "percent_statements_covered_display": "98"}, "missing_lines": [520], "excluded_lines": [], "start_line": 1}}, "classes": {"TestTempFileConfig": {"executed_lines": [22, 24, 26, 27, 28, 29, 30, 31, 35, 37, 47, 48, 49], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "TestTempFileInfo": {"executed_lines": [57, 59, 67, 68, 72, 74, 82, 84, 85, 86, 87], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 52}, "TestSecureTempFileManager": {"executed_lines": [95, 96, 99, 100, 101, 103, 107, 108, 110, 111, 114, 116, 120, 121, 123, 124, 125, 127], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [132, 136, 140, 144], "excluded_lines": [], "start_line": 90}, "TestSecureTempFileManagerContextManagers": {"executed_lines": [152, 154, 155, 156, 158, 159, 160, 162, 163, 167, 169, 170, 171, 173, 174, 175, 177, 178], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "TestSecureTempFileManagerCleanup": {"executed_lines": [186, 188, 189, 190, 192, 193, 195, 196, 198, 202, 204, 206, 207, 209, 211, 215, 217, 218, 220, 221, 223, 226, 228, 232, 234, 235, 236, 238, 239, 240, 242, 244, 248, 250, 252, 253, 255, 257, 261, 263, 264, 266, 267, 268, 270, 272, 276, 278, 279, 280, 289, 290, 292, 294, 303, 305, 306, 307, 314, 315, 317, 319], "summary": {"covered_lines": 62, "num_statements": 63, "percent_covered": 98.41269841269842, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.41269841269842, "percent_statements_covered_display": "98"}, "missing_lines": [299], "excluded_lines": [], "start_line": 181}, "TestSecureTempFileManagerStats": {"executed_lines": [327, 329, 330, 331, 333, 334, 335, 336, 338, 340, 344, 346, 348, 349, 350, 352, 354, 358, 360, 362, 363, 365, 366, 367, 368, 369, 371, 373, 375, 379, 381, 383, 384, 385, 387, 389, 393, 395, 396, 397, 404, 405, 406, 407, 409, 411, 412, 413, 414, 415], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 322}, "TestSecureTempFileManagerBackground": {"executed_lines": [423, 425, 426, 427, 429, 431, 433, 437, 439, 441, 442, 443, 445, 447], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418}, "TestModuleFunctions": {"executed_lines": [455, 456, 458, 460, 462, 476, 477, 478, 480, 481, 483, 484, 485, 488, 490, 492], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [467, 472], "excluded_lines": [], "start_line": 450}, "TestCleanupOrphanedFiles": {"executed_lines": [500, 502, 503, 505, 506, 507, 508, 510, 512, 514, 516], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 495}, "": {"executed_lines": [7, 8, 9, 10, 11, 12, 13, 14, 17, 20, 33, 52, 55, 70, 90, 93, 105, 118, 129, 130, 134, 135, 138, 139, 142, 143, 147, 150, 165, 181, 184, 200, 213, 230, 246, 259, 274, 296, 297, 301, 322, 325, 342, 356, 377, 391, 418, 421, 435, 450, 453, 464, 465, 469, 470, 474, 495, 498, 519], "summary": {"covered_lines": 59, "num_statements": 60, "percent_covered": 98.33333333333333, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.33333333333333, "percent_statements_covered_display": "98"}, "missing_lines": [520], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_tracing.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"test_get_service_name_default": {"executed_lines": [7, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "test_get_service_name_env": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "test_get_service_version_default": {"executed_lines": [15, 16], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "test_create_resource": {"executed_lines": [19, 21, 22], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "test_init_tracing": {"executed_lines": [31, 33, 35, 36, 37, 38, 39], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "test_create_span": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "test_add_span_attributes": {"executed_lines": [48, 49, 50, 51], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "test_record_span_exception": {"executed_lines": [54, 55, 56, 57, 58], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "test_inject_extract_context": {"executed_lines": [61, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "": {"executed_lines": [1, 2, 3, 4, 6, 10, 14, 18, 24, 25, 26, 27, 28, 29, 41, 47, 53, 60], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 66, 67, 68], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_websocket_enhanced.py": {"executed_lines": [7, 8, 9, 10, 12, 23, 26, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 42, 45, 47, 48, 49, 50, 51, 54, 57, 59, 60, 62, 63, 64, 65, 66, 68, 70, 78, 80, 81, 82, 83, 84, 87, 90, 92, 94, 95, 96, 97, 99, 101, 103, 104, 107, 110, 112, 114, 115, 116, 117, 119, 121, 123, 124, 127, 130, 132, 137, 138, 140, 142, 147, 148, 151, 153, 155, 160, 161, 164, 167, 169, 171, 180, 181, 182, 185, 186, 187, 189, 191, 193, 196, 199, 200, 202, 204, 206, 207, 209, 211, 213, 214, 215, 216, 217, 219, 220, 222, 223, 224, 226, 228, 229, 230, 233, 234, 235, 237, 238, 240, 241, 242, 244, 245, 247, 248, 250, 251, 253, 254, 255, 257, 258, 259, 261, 262, 264, 265, 267, 268, 270, 271, 272, 274, 276, 278, 280, 282, 284, 285, 287, 288, 289, 291, 292, 294, 295, 296, 298, 300, 304, 306, 307, 309, 310, 311, 313, 315, 317, 318, 320, 321, 323, 325, 326, 329, 332, 333, 335, 338, 339, 340, 342, 343, 346, 347, 350, 353, 356, 357, 360, 363, 366, 376, 377, 379, 381, 391, 392, 393, 394, 397, 400, 401, 403, 405, 406, 407, 409, 412, 415, 418, 420, 421, 423, 425, 426, 427, 429, 430, 431, 433, 434, 436, 439, 440, 443, 447, 448, 451, 452, 457, 458, 462, 463], "summary": {"covered_lines": 234, "num_statements": 237, "percent_covered": 98.73417721518987, "percent_covered_display": "99", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 98.73417721518987, "percent_statements_covered_display": "99"}, "missing_lines": [455, 460, 465], "excluded_lines": [], "functions": {"TestMessageType.test_client_to_server_types": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "TestMessageType.test_server_to_client_types": {"executed_lines": [34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "TestConnectionState.test_all_states": {"executed_lines": [47, 48, 49, 50, 51], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "TestConnectionInfo.test_creation": {"executed_lines": [59, 60, 62, 63, 64, 65, 66], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "TestConnectionInfo.test_to_dict": {"executed_lines": [70, 78, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "TestRateLimitConfig.test_default_config": {"executed_lines": [92, 94, 95, 96, 97], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "TestRateLimitConfig.test_custom_config": {"executed_lines": [101, 103, 104], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "TestHealthConfig.test_default_config": {"executed_lines": [112, 114, 115, 116, 117], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "TestHealthConfig.test_custom_config": {"executed_lines": [121, 123, 124], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 119}, "TestRateLimiter.test_allows_within_limit": {"executed_lines": [132, 137, 138], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 130}, "TestRateLimiter.test_blocks_over_limit": {"executed_lines": [142, 147, 148, 151], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "TestRateLimiter.test_different_clients_independent": {"executed_lines": [155, 160, 161, 164, 167], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 153}, "TestRateLimiter.test_get_wait_time": {"executed_lines": [171, 180, 181, 182, 185, 186, 187], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 169}, "TestRateLimiter.test_wait_time_zero_for_unblocked": {"executed_lines": [191, 193], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 189}, "TestEnhancedConnectionManager.manager": {"executed_lines": [202], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 200}, "TestEnhancedConnectionManager.test_initialization": {"executed_lines": [206, 207], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 204}, "TestEnhancedConnectionManager.test_get_metrics": {"executed_lines": [211, 213, 214, 215, 216, 217], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 209}, "TestEnhancedConnectionManager.test_connect": {"executed_lines": [222, 223, 224, 226, 228, 229, 230, 233, 234, 235], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 220}, "TestEnhancedConnectionManager.test_disconnect": {"executed_lines": [240, 241, 242, 244, 245, 247, 248], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 238}, "TestEnhancedConnectionManager.test_multiple_connections_same_conversion": {"executed_lines": [253, 254, 255, 257, 258, 259, 261, 262, 264, 265], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 251}, "TestEnhancedConnectionManager.test_broadcast": {"executed_lines": [270, 271, 272, 274, 276, 278, 280, 282], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 268}, "TestEnhancedConnectionManager.test_broadcast_no_connections": {"executed_lines": [287, 288, 289], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 285}, "TestEnhancedConnectionManager.test_handle_ping_message": {"executed_lines": [294, 295, 296, 298, 300, 304], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 292}, "TestEnhancedConnectionManager.test_check_connection_health": {"executed_lines": [309, 310, 311, 313, 315, 317, 318], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 307}, "TestEnhancedConnectionManager.test_check_connection_health_no_connections": {"executed_lines": [323, 325, 326], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 321}, "TestConnectionLifecycle.test_full_lifecycle": {"executed_lines": [335, 338, 339, 340, 342, 343, 346, 347, 350, 353, 356, 357], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 333}, "TestMessageProtocol.test_message_format": {"executed_lines": [366, 376, 377], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 363}, "TestMessageProtocol.test_progress_message_structure": {"executed_lines": [381, 391, 392, 393, 394], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 379}, "TestMemoryLeakPrevention.test_cleanup_on_disconnect": {"executed_lines": [403, 405, 406, 407, 409, 412, 415, 418], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 401}, "TestMemoryLeakPrevention.test_empty_conversion_cleanup": {"executed_lines": [423, 425, 426, 427, 429, 430, 431, 433, 434, 436, 439, 440, 443], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 421}, "TestWebSocketIntegration.test_websocket_endpoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [455], "excluded_lines": [], "start_line": 452}, "TestWebSocketIntegration.test_concurrent_connections": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [460], "excluded_lines": [], "start_line": 458}, "TestWebSocketIntegration.test_heartbeat_mechanism": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [465], "excluded_lines": [], "start_line": 463}, "": {"executed_lines": [7, 8, 9, 10, 12, 23, 26, 32, 42, 45, 54, 57, 68, 87, 90, 99, 107, 110, 119, 127, 130, 140, 153, 169, 189, 196, 199, 200, 204, 209, 219, 220, 237, 238, 250, 251, 267, 268, 284, 285, 291, 292, 306, 307, 320, 321, 329, 332, 333, 360, 363, 379, 397, 400, 401, 420, 421, 447, 448, 451, 452, 457, 458, 462, 463], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestMessageType": {"executed_lines": [28, 29, 30, 34, 35, 36, 37, 38, 39], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "TestConnectionState": {"executed_lines": [47, 48, 49, 50, 51], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "TestConnectionInfo": {"executed_lines": [59, 60, 62, 63, 64, 65, 66, 70, 78, 80, 81, 82, 83, 84], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 54}, "TestRateLimitConfig": {"executed_lines": [92, 94, 95, 96, 97, 101, 103, 104], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 87}, "TestHealthConfig": {"executed_lines": [112, 114, 115, 116, 117, 121, 123, 124], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestRateLimiter": {"executed_lines": [132, 137, 138, 142, 147, 148, 151, 155, 160, 161, 164, 167, 171, 180, 181, 182, 185, 186, 187, 191, 193], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "TestEnhancedConnectionManager": {"executed_lines": [202, 206, 207, 211, 213, 214, 215, 216, 217, 222, 223, 224, 226, 228, 229, 230, 233, 234, 235, 240, 241, 242, 244, 245, 247, 248, 253, 254, 255, 257, 258, 259, 261, 262, 264, 265, 270, 271, 272, 274, 276, 278, 280, 282, 287, 288, 289, 294, 295, 296, 298, 300, 304, 309, 310, 311, 313, 315, 317, 318, 323, 325, 326], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 196}, "TestConnectionLifecycle": {"executed_lines": [335, 338, 339, 340, 342, 343, 346, 347, 350, 353, 356, 357], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 329}, "TestMessageProtocol": {"executed_lines": [366, 376, 377, 381, 391, 392, 393, 394], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 360}, "TestMemoryLeakPrevention": {"executed_lines": [403, 405, 406, 407, 409, 412, 415, 418, 423, 425, 426, 427, 429, 430, 431, 433, 434, 436, 439, 440, 443], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 397}, "TestWebSocketIntegration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [455, 460, 465], "excluded_lines": [], "start_line": 448}, "": {"executed_lines": [7, 8, 9, 10, 12, 23, 26, 32, 42, 45, 54, 57, 68, 87, 90, 99, 107, 110, 119, 127, 130, 140, 153, 169, 189, 196, 199, 200, 204, 209, 219, 220, 237, 238, 250, 251, 267, 268, 284, 285, 291, 292, 306, 307, 320, 321, 329, 332, 333, 360, 363, 379, 397, 400, 401, 420, 421, 447, 448, 451, 452, 457, 458, 462, 463], "summary": {"covered_lines": 65, "num_statements": 65, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_websocket_enhanced_extra.py": {"executed_lines": [2, 3, 4, 5, 6, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 61, 62, 63, 66, 67, 69, 70, 72, 74, 75, 76, 79, 81, 82, 84, 87, 88, 89, 92, 93, 94, 96, 97, 99, 102, 104, 105, 107, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 122, 124, 125, 127, 128, 130, 133, 136, 139, 141, 144, 146, 147, 149, 150, 151, 153, 155, 158, 159, 160, 164], "summary": {"covered_lines": 97, "num_statements": 99, "percent_covered": 97.97979797979798, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.97979797979798, "percent_statements_covered_display": "98"}, "missing_lines": [161, 162], "excluded_lines": [], "functions": {"manager": {"executed_lines": [19], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "mock_websocket": {"executed_lines": [23, 24, 25, 26], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "test_manager_start_stop": {"executed_lines": [32, 33, 34, 35, 38, 39, 40, 41], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "test_broadcast_to_all": {"executed_lines": [46, 47, 48, 50, 51, 52, 53, 54], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "test_send_personal_message": {"executed_lines": [59, 61, 62, 63, 66, 67], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "test_get_connection_info": {"executed_lines": [72, 74, 75, 76, 79], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "test_handle_message_errors": {"executed_lines": [84, 87, 88, 89, 92, 93, 94], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "test_broadcast_exception_handling": {"executed_lines": [99, 102, 104, 105, 107], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "test_global_instance_helpers": {"executed_lines": [112, 113, 114, 116, 117, 118, 120, 121, 122], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "test_heartbeat_loop_cleanup": {"executed_lines": [127, 128, 130, 133, 136, 139, 141, 144], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 125}, "test_cleanup_loop": {"executed_lines": [149, 150, 151, 153, 155, 158, 159, 160, 164], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [161, 162], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [2, 3, 4, 5, 6, 17, 18, 21, 22, 28, 29, 43, 44, 56, 57, 69, 70, 81, 82, 96, 97, 109, 110, 124, 125, 146, 147], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 6, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 43, 44, 46, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 61, 62, 63, 66, 67, 69, 70, 72, 74, 75, 76, 79, 81, 82, 84, 87, 88, 89, 92, 93, 94, 96, 97, 99, 102, 104, 105, 107, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 122, 124, 125, 127, 128, 130, 133, 136, 139, 141, 144, 146, 147, 149, 150, 151, 153, 155, 158, 159, 160, 164], "summary": {"covered_lines": 97, "num_statements": 99, "percent_covered": 97.97979797979798, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.97979797979798, "percent_statements_covered_display": "98"}, "missing_lines": [161, 162], "excluded_lines": [], "start_line": 1}}}, "src/tests/unit/test_websocket_manager.py": {"executed_lines": [5, 6, 7, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 22, 23, 24, 25, 28, 30, 32, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 50, 51, 52, 53, 54, 55, 56, 58, 59, 61, 62, 64, 65, 66, 67, 68, 69, 71, 72, 74, 75, 77, 79, 80, 82, 83, 84, 85, 86, 87, 88, 90, 91, 93, 94, 96, 97, 98, 99, 100, 101, 103, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 124, 125, 126, 127], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"TestConnectionManager.test_connect": {"executed_lines": [12, 13, 14, 16, 18, 19, 20], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "TestConnectionManager.test_disconnect": {"executed_lines": [23, 24, 25, 28, 30, 32], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "TestConnectionManager.test_disconnect_non_existent": {"executed_lines": [35, 36, 38], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "TestConnectionManager.test_send_personal_message": {"executed_lines": [42, 43, 44, 46, 48], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "TestConnectionManager.test_broadcast_success": {"executed_lines": [52, 53, 54, 55, 56, 58, 59, 61, 62], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 51}, "TestConnectionManager.test_broadcast_partial_failure": {"executed_lines": [66, 67, 68, 69, 71, 72, 74, 75, 77, 79, 80], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "TestConnectionManager.test_broadcast_to_all": {"executed_lines": [84, 85, 86, 87, 88, 90, 91, 93, 94], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "TestConnectionManager.test_send_personal_message_failure": {"executed_lines": [98, 99, 100, 101, 103, 104], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "TestConnectionManager.test_broadcast_unknown_id": {"executed_lines": [108, 110], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "TestConnectionManager.test_get_counts": {"executed_lines": [113, 114, 115, 116, 117, 119, 120, 121, 122, 124, 125, 126, 127], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 22, 34, 40, 41, 50, 51, 64, 65, 82, 83, 96, 97, 106, 107, 112], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TestConnectionManager": {"executed_lines": [12, 13, 14, 16, 18, 19, 20, 23, 24, 25, 28, 30, 32, 35, 36, 38, 42, 43, 44, 46, 48, 52, 53, 54, 55, 56, 58, 59, 61, 62, 66, 67, 68, 69, 71, 72, 74, 75, 77, 79, 80, 84, 85, 86, 87, 88, 90, 91, 93, 94, 98, 99, 100, 101, 103, 104, 108, 110, 113, 114, 115, 116, 117, 119, 120, 121, 122, 124, 125, 126, 127], "summary": {"covered_lines": 71, "num_statements": 71, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [5, 6, 7, 9, 10, 11, 22, 34, 40, 41, 50, 51, 64, 65, 82, 83, 96, 97, 106, 107, 112], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/utils/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/utils/debt_cli.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 103, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 103, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 14, 15, 16, 18, 19, 21, 23, 26, 27, 29, 32, 33, 39, 44, 50, 52, 54, 55, 57, 58, 59, 61, 62, 63, 65, 67, 68, 75, 83, 86, 87, 93, 98, 100, 102, 103, 105, 106, 108, 110, 111, 113, 116, 117, 123, 125, 127, 128, 130, 132, 133, 134, 136, 138, 139, 140, 143, 144, 145, 151, 153, 155, 156, 158, 160, 161, 162, 164, 166, 167, 168, 169, 170, 173, 174, 180, 182, 184, 185, 187, 189, 190, 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 215, 218, 219], "excluded_lines": [], "functions": {"cli": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29], "excluded_lines": [], "start_line": 27}, "scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 54, 55, 57, 58, 59, 61, 62, 63, 65, 67, 68, 75, 83], "excluded_lines": [], "start_line": 50}, "report": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [100, 102, 103, 105, 106, 108, 110, 111, 113], "excluded_lines": [], "start_line": 98}, "critical": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [125, 127, 128, 130, 132, 133, 134, 136, 138, 139, 140], "excluded_lines": [], "start_line": 123}, "issue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [153, 155, 156, 158, 160, 161, 162, 164, 166, 167, 168, 169, 170], "excluded_lines": [], "start_line": 151}, "summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [182, 184, 185, 187, 189, 190, 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 215], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 14, 15, 16, 18, 19, 21, 23, 26, 27, 32, 33, 39, 44, 50, 86, 87, 93, 98, 116, 117, 123, 143, 144, 145, 151, 173, 174, 180, 218, 219], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 103, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 103, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [12, 14, 15, 16, 18, 19, 21, 23, 26, 27, 29, 32, 33, 39, 44, 50, 52, 54, 55, 57, 58, 59, 61, 62, 63, 65, 67, 68, 75, 83, 86, 87, 93, 98, 100, 102, 103, 105, 106, 108, 110, 111, 113, 116, 117, 123, 125, 127, 128, 130, 132, 133, 134, 136, 138, 139, 140, 143, 144, 145, 151, 153, 155, 156, 158, 160, 161, 162, 164, 166, 167, 168, 169, 170, 173, 174, 180, 182, 184, 185, 187, 189, 190, 191, 193, 195, 196, 197, 198, 199, 200, 201, 203, 204, 205, 206, 207, 209, 210, 211, 215, 218, 219], "excluded_lines": [], "start_line": 1}}}, "src/utils/debt_tracker.py": {"executed_lines": [18, 20, 21, 22, 23, 24, 25, 27, 29, 32, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 72, 74, 76, 78, 79, 85, 89, 94, 100, 101, 103, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 127, 128, 131, 132, 134, 144, 146, 148, 162, 170, 171, 173, 174, 176, 177, 179, 180, 182, 188, 189, 196, 203, 205, 206, 209, 210, 213, 214, 215, 216, 217, 219, 221, 227, 229, 238, 240, 241, 250, 252, 253, 254, 257, 259, 260, 269, 271, 272, 273, 276, 278, 279, 290, 291, 293, 294, 295, 296, 298, 300, 309, 310, 311, 313, 314, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 328, 330, 331, 336, 337, 338, 339, 340, 342, 345, 351, 352, 353, 355, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 368, 370, 371, 372, 374], "summary": {"covered_lines": 164, "num_statements": 164, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"DebtItem.to_dict": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "DebtItem.github_issue_link": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "DebtItem.__str__": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "DebtTracker.__init__": {"executed_lines": [100, 101], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "DebtTracker.scan_file": {"executed_lines": [112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 127, 128, 131, 132, 134, 144, 146], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "DebtTracker.scan_directory": {"executed_lines": [162, 170, 171, 173, 174, 176, 177, 179, 180], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "DebtTracker.get_summary": {"executed_lines": [188, 189, 196, 203, 205, 206, 209, 210, 213, 214, 215, 216, 217, 219], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 182}, "DebtTracker.get_critical_items": {"executed_lines": [227], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 221}, "DebtTracker.filter_by_issue": {"executed_lines": [238], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 229}, "DebtTracker._parse_category": {"executed_lines": [250, 252, 253, 254, 257], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 241}, "DebtTracker._parse_severity": {"executed_lines": [269, 271, 272, 273, 276], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 260}, "DebtTracker._get_context": {"executed_lines": [290, 291, 293, 294, 295, 296, 298], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 279}, "DebtTracker.export_markdown": {"executed_lines": [309, 310, 311, 313, 314, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 328, 330, 331, 336, 337, 338, 339, 340, 342, 345, 351, 352, 353, 355, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 368, 370, 371, 372, 374], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 300}, "": {"executed_lines": [18, 20, 21, 22, 23, 24, 25, 27, 29, 32, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 74, 78, 85, 89, 94, 103, 148, 182, 221, 229, 240, 241, 259, 260, 278, 279, 300], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DebtSeverity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "DebtCategory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "DebtItem": {"executed_lines": [72, 76, 79], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "DebtTracker": {"executed_lines": [100, 101, 112, 113, 115, 116, 117, 118, 119, 120, 122, 123, 124, 125, 127, 128, 131, 132, 134, 144, 146, 162, 170, 171, 173, 174, 176, 177, 179, 180, 188, 189, 196, 203, 205, 206, 209, 210, 213, 214, 215, 216, 217, 219, 227, 238, 250, 252, 253, 254, 257, 269, 271, 272, 273, 276, 290, 291, 293, 294, 295, 296, 298, 309, 310, 311, 313, 314, 316, 317, 318, 319, 320, 321, 323, 324, 325, 326, 328, 330, 331, 336, 337, 338, 339, 340, 342, 345, 351, 352, 353, 355, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 368, 370, 371, 372, 374], "summary": {"covered_lines": 107, "num_statements": 107, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 85}, "": {"executed_lines": [18, 20, 21, 22, 23, 24, 25, 27, 29, 32, 35, 36, 37, 38, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 74, 78, 85, 89, 94, 103, 148, 182, 221, 229, 240, 241, 259, 260, 278, 279, 300], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/utils/dependency_detector.py": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 47, 50, 51, 52, 53, 54, 55, 56, 58, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 89, 91, 92, 93, 94, 95, 97, 99, 100, 101, 102, 103, 105, 107, 108, 110, 112, 113, 115, 117, 118, 119, 121, 123, 125, 126, 129, 137, 140, 142, 143, 144, 146, 147, 148, 150, 151, 153, 154, 158, 159, 160, 161, 162, 164, 167, 169, 170, 171, 173, 174, 178, 181, 186, 187, 188, 190, 191, 193, 194, 195, 196, 197, 198, 200, 203, 205, 206, 207, 208, 209, 211, 212, 213, 214, 216, 217, 219, 220, 221, 223, 226, 228, 229, 240, 241, 243, 245, 246, 247, 249, 252, 256, 257, 259, 260, 261, 263, 266, 268, 269, 271, 272, 273, 274, 278, 279, 283, 284, 285, 286, 287, 289, 290, 291, 292, 293, 295, 298, 305, 306, 308, 311, 312, 313, 316, 321, 322, 323, 324, 327, 328, 330, 331, 335, 337, 343, 345, 346, 347, 348, 349, 351, 357, 365, 368, 388, 389, 391, 392, 394, 395, 407, 408, 419, 420, 421, 422, 425, 430, 431, 432, 434, 444, 447, 449, 450, 451, 452, 453, 455, 456, 457, 459, 461, 462, 463, 465, 468, 554], "summary": {"covered_lines": 235, "num_statements": 280, "percent_covered": 83.92857142857143, "percent_covered_display": "84", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 83.92857142857143, "percent_statements_covered_display": "84"}, "missing_lines": [128, 275, 276, 280, 281, 317, 318, 352, 353, 354, 355, 470, 472, 473, 479, 482, 483, 484, 486, 489, 492, 493, 495, 497, 498, 499, 500, 501, 503, 505, 506, 507, 508, 509, 511, 517, 520, 521, 523, 544, 545, 548, 549, 551, 555], "excluded_lines": [], "functions": {"ImportVisitor.__init__": {"executed_lines": [51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "ImportVisitor.visit_Import": {"executed_lines": [60, 63, 64, 65, 66, 67], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 58}, "ImportVisitor.visit_ImportFrom": {"executed_lines": [71, 72, 73, 74, 75, 76, 77, 78, 79], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 69}, "ImportVisitor.visit_FunctionDef": {"executed_lines": [83, 84, 85, 86, 87], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 81}, "ImportVisitor.visit_AsyncFunctionDef": {"executed_lines": [91, 92, 93, 94, 95], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 89}, "ImportVisitor.visit_ClassDef": {"executed_lines": [99, 100, 101, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "ImportVisitor.visit_Name": {"executed_lines": [107, 108], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "ImportVisitor.visit_Attribute": {"executed_lines": [112, 113], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "ImportVisitor.get_unused_imports": {"executed_lines": [117, 118, 119, 121, 123, 125, 126, 129, 137], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [128], "excluded_lines": [], "start_line": 115}, "parse_requirements_file": {"executed_lines": [142, 143, 144, 146, 147, 148, 150, 151, 153, 154, 158, 159, 160, 161, 162, 164], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 140}, "parse_pyproject_dependencies": {"executed_lines": [169, 170, 171, 173, 174, 178, 181, 186, 187, 188, 190, 191, 193, 194, 195, 196, 197, 198, 200], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "scan_python_file": {"executed_lines": [205, 206, 207, 208, 209, 211, 212, 213, 214, 216, 217, 219, 220, 221, 223], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 203}, "find_python_files": {"executed_lines": [228, 229, 240, 241, 243, 245, 246, 247, 249], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "scan_directory_for_unused_imports": {"executed_lines": [256, 257, 259, 260, 261, 263], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 252}, "get_all_imported_modules": {"executed_lines": [268, 269, 271, 272, 273, 274, 278, 279, 283, 284, 285, 286, 287, 289, 290, 291, 292, 293, 295], "summary": {"covered_lines": 19, "num_statements": 23, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 82.6086956521739, "percent_statements_covered_display": "83"}, "missing_lines": [275, 276, 280, 281], "excluded_lines": [], "start_line": 266}, "find_unused_packages": {"executed_lines": [305, 306, 308, 311, 312, 313, 316, 321, 322, 323, 324, 327, 328, 330, 331, 335, 337, 343, 345, 346, 347, 348, 349, 351, 357, 365], "summary": {"covered_lines": 26, "num_statements": 32, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [317, 318, 352, 353, 354, 355], "excluded_lines": [], "start_line": 298}, "analyze_dependencies": {"executed_lines": [388, 389, 391, 392, 394, 395, 407, 408, 419, 420, 421, 422, 425, 430, 431, 432, 434], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 368}, "print_report": {"executed_lines": [447, 449, 450, 451, 452, 453, 455, 456, 457, 459, 461, 462, 463, 465], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 444}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [470, 472, 473, 479, 482, 483, 484, 486, 489, 492, 493, 495, 497, 498, 499, 500, 501, 503, 505, 506, 507, 508, 509, 511, 517, 520, 521, 523, 544, 545, 548, 549, 551], "excluded_lines": [], "start_line": 468}, "": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 47, 50, 58, 69, 81, 89, 97, 105, 110, 115, 140, 167, 203, 226, 252, 266, 298, 368, 444, 468, 554], "summary": {"covered_lines": 45, "num_statements": 46, "percent_covered": 97.82608695652173, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.82608695652173, "percent_statements_covered_display": "98"}, "missing_lines": [555], "excluded_lines": [], "start_line": 1}}, "classes": {"UnusedImport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "UnusedPackage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "DependencyReport": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ImportVisitor": {"executed_lines": [51, 52, 53, 54, 55, 56, 60, 63, 64, 65, 66, 67, 71, 72, 73, 74, 75, 76, 77, 78, 79, 83, 84, 85, 86, 87, 91, 92, 93, 94, 95, 99, 100, 101, 102, 103, 107, 108, 112, 113, 117, 118, 119, 121, 123, 125, 126, 129, 137], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 98.0, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98"}, "missing_lines": [128], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [9, 10, 11, 12, 13, 14, 15, 18, 19, 22, 23, 24, 25, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 47, 50, 58, 69, 81, 89, 97, 105, 110, 115, 140, 142, 143, 144, 146, 147, 148, 150, 151, 153, 154, 158, 159, 160, 161, 162, 164, 167, 169, 170, 171, 173, 174, 178, 181, 186, 187, 188, 190, 191, 193, 194, 195, 196, 197, 198, 200, 203, 205, 206, 207, 208, 209, 211, 212, 213, 214, 216, 217, 219, 220, 221, 223, 226, 228, 229, 240, 241, 243, 245, 246, 247, 249, 252, 256, 257, 259, 260, 261, 263, 266, 268, 269, 271, 272, 273, 274, 278, 279, 283, 284, 285, 286, 287, 289, 290, 291, 292, 293, 295, 298, 305, 306, 308, 311, 312, 313, 316, 321, 322, 323, 324, 327, 328, 330, 331, 335, 337, 343, 345, 346, 347, 348, 349, 351, 357, 365, 368, 388, 389, 391, 392, 394, 395, 407, 408, 419, 420, 421, 422, 425, 430, 431, 432, 434, 444, 447, 449, 450, 451, 452, 453, 455, 456, 457, 459, 461, 462, 463, 465, 468, 554], "summary": {"covered_lines": 186, "num_statements": 230, "percent_covered": 80.8695652173913, "percent_covered_display": "81", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 80.8695652173913, "percent_statements_covered_display": "81"}, "missing_lines": [275, 276, 280, 281, 317, 318, 352, 353, 354, 355, 470, 472, 473, 479, 482, 483, 484, 486, 489, 492, 493, 495, 497, 498, 499, 500, 501, 503, 505, 506, 507, 508, 509, 511, 517, 520, 521, 523, 544, 545, 548, 549, 551, 555], "excluded_lines": [], "start_line": 1}}}, "src/utils/logging_config.py": {"executed_lines": [11, 12, 14, 17, 26, 36, 38, 44, 49, 58, 59, 61, 62, 63, 66, 67, 70, 80, 83, 94, 95, 96, 97, 99, 100, 101, 103, 104, 107, 110, 113, 114, 115, 116, 119, 128, 131, 133, 135, 136, 137, 139, 141, 144, 145], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"setup_logging": {"executed_lines": [26, 36, 38, 44, 49, 58, 59, 61, 62, 63, 66, 67], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "get_logger": {"executed_lines": [80], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "StructlogMiddleware.__init__": {"executed_lines": [95, 96, 97], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "StructlogMiddleware.__call__": {"executed_lines": [100, 101, 103, 104, 107, 110, 113, 114, 115, 116, 119, 128, 131, 133, 139, 141, 144, 145], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "StructlogMiddleware.__call__.send_wrapper": {"executed_lines": [135, 136, 137], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "": {"executed_lines": [11, 12, 14, 17, 70, 83, 94, 99], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"StructlogMiddleware": {"executed_lines": [95, 96, 97, 100, 101, 103, 104, 107, 110, 113, 114, 115, 116, 119, 128, 131, 133, 135, 136, 137, 139, 141, 144, 145], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "": {"executed_lines": [11, 12, 14, 17, 26, 36, 38, 44, 49, 58, 59, 61, 62, 63, 66, 67, 70, 80, 83, 94, 99], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/validation.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 34, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 2, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 23, 33, 69, 70, 71, 73, 74, 79, 80, 87, 88, 90, 91, 95, 100, 104, 108, 109, 114], "excluded_lines": [], "functions": {"ValidationFramework.validate_upload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [69, 70, 71, 73, 74, 79, 80, 87, 88, 90, 91, 95, 100, 104, 108, 109, 114], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 2, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 23, 33], "excluded_lines": [], "start_line": 1}}, "classes": {"ValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "ValidationFramework": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [69, 70, 71, 73, 74, 79, 80, 87, 88, 90, 91, 95, 100, 104, 108, 109, 114], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [1, 2, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 22, 23, 33], "excluded_lines": [], "start_line": 1}}}, "src/websocket/__init__.py": {"executed_lines": [8, 9, 11], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [8, 9, 11], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [8, 9, 11], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/websocket/enhanced_manager.py": {"executed_lines": [14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 27, 30, 33, 34, 35, 36, 37, 40, 51, 52, 53, 56, 57, 58, 59, 60, 61, 64, 65, 66, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 86, 98, 99, 102, 103, 104, 105, 108, 109, 112, 113, 114, 115, 116, 119, 126, 127, 128, 129, 131, 133, 136, 142, 146, 149, 150, 151, 152, 155, 160, 161, 163, 165, 166, 167, 170, 206, 212, 215, 218, 221, 224, 225, 226, 229, 230, 231, 233, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 249, 250, 251, 252, 254, 256, 270, 272, 279, 280, 283, 291, 297, 299, 310, 311, 312, 315, 316, 318, 319, 325, 327, 341, 342, 345, 346, 347, 349, 352, 360, 361, 363, 370, 371, 372, 375, 376, 381, 395, 396, 399, 400, 402, 403, 405, 406, 408, 411, 412, 413, 415, 416, 417, 420, 421, 423, 424, 426, 436, 437, 438, 439, 441, 455, 456, 457, 459, 460, 461, 462, 463, 468, 470, 472, 474, 476, 478, 480, 482, 483, 484, 486, 488, 496, 506, 507, 509, 510, 511, 512, 514, 515, 517, 521, 523, 530, 532, 534, 536, 538, 540, 542, 543, 544, 546, 547, 553, 554, 555, 556, 558, 560, 562, 563, 567, 569, 570, 571, 573, 574, 576, 578, 579, 580, 582, 583, 586, 587, 588, 590, 591, 593, 594, 600, 603, 606, 607, 608, 611, 613, 614, 617, 620, 621], "summary": {"covered_lines": 247, "num_statements": 267, "percent_covered": 92.50936329588015, "percent_covered_display": "93", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 92.50936329588015, "percent_statements_covered_display": "93"}, "missing_lines": [137, 138, 139, 156, 157, 343, 353, 354, 365, 409, 464, 465, 466, 518, 519, 557, 564, 565, 595, 596], "excluded_lines": [], "functions": {"ConnectionInfo.to_dict": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "RateLimiter.__init__": {"executed_lines": [127, 128, 129], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "RateLimiter.is_allowed": {"executed_lines": [133, 136, 142, 146, 149, 150, 151, 152, 155, 160, 161], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "69"}, "missing_lines": [137, 138, 139, 156, 157], "excluded_lines": [], "start_line": 131}, "RateLimiter.get_wait_time": {"executed_lines": [165, 166, 167], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 163}, "EnhancedConnectionManager.__init__": {"executed_lines": [212, 215, 218, 221, 224, 225, 226, 229, 230, 231], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "EnhancedConnectionManager.start": {"executed_lines": [235, 236, 237, 238], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 233}, "EnhancedConnectionManager.stop": {"executed_lines": [242, 244, 245, 246, 247, 249, 250, 251, 252, 254], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 240}, "EnhancedConnectionManager.connect": {"executed_lines": [270, 272, 279, 280, 283, 291, 297], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 256}, "EnhancedConnectionManager.disconnect": {"executed_lines": [310, 311, 312, 315, 316, 318, 319, 325], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 299}, "EnhancedConnectionManager.handle_message": {"executed_lines": [341, 342, 345, 346, 347, 349, 352, 360, 361, 363, 370, 371, 372, 375, 376], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 78.94736842105263, "percent_statements_covered_display": "79"}, "missing_lines": [343, 353, 354, 365], "excluded_lines": [], "start_line": 327}, "EnhancedConnectionManager.broadcast": {"executed_lines": [395, 396, 399, 400, 402, 403, 405, 406, 408, 411, 412, 413, 415, 416, 417, 420, 421, 423, 424], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.0, "percent_statements_covered_display": "95"}, "missing_lines": [409], "excluded_lines": [], "start_line": 381}, "EnhancedConnectionManager.broadcast_to_all": {"executed_lines": [436, 437, 438, 439], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 426}, "EnhancedConnectionManager.send_personal_message": {"executed_lines": [455, 456, 457, 459, 460, 461, 462, 463], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [464, 465, 466], "excluded_lines": [], "start_line": 441}, "EnhancedConnectionManager.get_connection_count": {"executed_lines": [470], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 468}, "EnhancedConnectionManager.get_total_connection_count": {"executed_lines": [474], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 472}, "EnhancedConnectionManager.get_active_conversions": {"executed_lines": [478], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 476}, "EnhancedConnectionManager.get_connection_info": {"executed_lines": [482, 483, 484], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 480}, "EnhancedConnectionManager.get_metrics": {"executed_lines": [488], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 486}, "EnhancedConnectionManager.check_connection_health": {"executed_lines": [506, 507, 509, 510, 511, 512, 514, 515, 517, 521, 523], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [518, 519], "excluded_lines": [], "start_line": 496}, "EnhancedConnectionManager._send_message": {"executed_lines": [532], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 530}, "EnhancedConnectionManager._generate_client_id": {"executed_lines": [536, 538], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 534}, "EnhancedConnectionManager._heartbeat_loop": {"executed_lines": [542, 543, 544, 546, 547, 553, 554, 555, 556, 558, 560, 562, 563], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 81.25, "percent_statements_covered_display": "81"}, "missing_lines": [557, 564, 565], "excluded_lines": [], "start_line": 540}, "EnhancedConnectionManager._cleanup_loop": {"executed_lines": [569, 570, 571, 573, 574, 576, 578, 579, 580, 582, 583, 586, 587, 588, 590, 591, 593, 594], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [595, 596], "excluded_lines": [], "start_line": 567}, "get_enhanced_manager": {"executed_lines": [606, 607, 608], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 603}, "start_websocket_manager": {"executed_lines": [613, 614], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 611}, "stop_websocket_manager": {"executed_lines": [620, 621], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 617}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 27, 30, 33, 34, 35, 36, 37, 40, 51, 52, 53, 56, 57, 58, 59, 60, 61, 64, 65, 66, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 98, 99, 102, 103, 104, 105, 108, 109, 112, 113, 114, 115, 116, 119, 126, 131, 163, 170, 206, 233, 240, 256, 299, 327, 381, 426, 441, 468, 472, 476, 480, 486, 496, 530, 534, 540, 567, 600, 603, 611, 617], "summary": {"covered_lines": 85, "num_statements": 85, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "MessageType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "ConnectionInfo": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "RateLimitConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "HealthConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 109}, "RateLimiter": {"executed_lines": [127, 128, 129, 133, 136, 142, 146, 149, 150, 151, 152, 155, 160, 161, 165, 166, 167], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 77.27272727272727, "percent_covered_display": "77", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 77.27272727272727, "percent_statements_covered_display": "77"}, "missing_lines": [137, 138, 139, 156, 157], "excluded_lines": [], "start_line": 119}, "EnhancedConnectionManager": {"executed_lines": [212, 215, 218, 221, 224, 225, 226, 229, 230, 231, 235, 236, 237, 238, 242, 244, 245, 246, 247, 249, 250, 251, 252, 254, 270, 272, 279, 280, 283, 291, 297, 310, 311, 312, 315, 316, 318, 319, 325, 341, 342, 345, 346, 347, 349, 352, 360, 361, 363, 370, 371, 372, 375, 376, 395, 396, 399, 400, 402, 403, 405, 406, 408, 411, 412, 413, 415, 416, 417, 420, 421, 423, 424, 436, 437, 438, 439, 455, 456, 457, 459, 460, 461, 462, 463, 470, 474, 478, 482, 483, 484, 488, 506, 507, 509, 510, 511, 512, 514, 515, 517, 521, 523, 532, 536, 538, 542, 543, 544, 546, 547, 553, 554, 555, 556, 558, 560, 562, 563, 569, 570, 571, 573, 574, 576, 578, 579, 580, 582, 583, 586, 587, 588, 590, 591, 593, 594], "summary": {"covered_lines": 137, "num_statements": 152, "percent_covered": 90.13157894736842, "percent_covered_display": "90", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 90.13157894736842, "percent_statements_covered_display": "90"}, "missing_lines": [343, 353, 354, 365, 409, 464, 465, 466, 518, 519, 557, 564, 565, 595, 596], "excluded_lines": [], "start_line": 170}, "": {"executed_lines": [14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 27, 30, 33, 34, 35, 36, 37, 40, 51, 52, 53, 56, 57, 58, 59, 60, 61, 64, 65, 66, 69, 70, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 98, 99, 102, 103, 104, 105, 108, 109, 112, 113, 114, 115, 116, 119, 126, 131, 163, 170, 206, 233, 240, 256, 299, 327, 381, 426, 441, 468, 472, 476, 480, 486, 496, 530, 534, 540, 567, 600, 603, 606, 607, 608, 611, 613, 614, 617, 620, 621], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/websocket/manager.py": {"executed_lines": [11, 12, 13, 15, 18, 26, 28, 30, 38, 40, 41, 43, 44, 49, 57, 58, 61, 62, 63, 65, 70, 78, 79, 80, 81, 84, 92, 93, 94, 97, 98, 100, 101, 102, 103, 104, 105, 108, 109, 111, 118, 119, 121, 131, 133, 140, 142, 149, 153], "summary": {"covered_lines": 49, "num_statements": 50, "percent_covered": 98.0, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.0, "percent_statements_covered_display": "98"}, "missing_lines": [82], "excluded_lines": [], "functions": {"ConnectionManager.__init__": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "ConnectionManager.connect": {"executed_lines": [38, 40, 41, 43, 44], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "ConnectionManager.disconnect": {"executed_lines": [57, 58, 61, 62, 63, 65], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "ConnectionManager.send_personal_message": {"executed_lines": [78, 79, 80, 81], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [82], "excluded_lines": [], "start_line": 70}, "ConnectionManager.broadcast": {"executed_lines": [92, 93, 94, 97, 98, 100, 101, 102, 103, 104, 105, 108, 109], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "ConnectionManager.broadcast_to_all": {"executed_lines": [118, 119], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 111}, "ConnectionManager.get_connection_count": {"executed_lines": [131], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 121}, "ConnectionManager.get_total_connection_count": {"executed_lines": [140], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 133}, "ConnectionManager.get_active_conversions": {"executed_lines": [149], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "": {"executed_lines": [11, 12, 13, 15, 18, 26, 30, 49, 70, 84, 111, 121, 133, 142, 153], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ConnectionManager": {"executed_lines": [28, 38, 40, 41, 43, 44, 57, 58, 61, 62, 63, 65, 78, 79, 80, 81, 92, 93, 94, 97, 98, 100, 101, 102, 103, 104, 105, 108, 109, 118, 119, 131, 140, 149], "summary": {"covered_lines": 34, "num_statements": 35, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.14285714285714, "percent_statements_covered_display": "97"}, "missing_lines": [82], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [11, 12, 13, 15, 18, 26, 30, 49, 70, 84, 111, 121, 133, 142, 153], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "src/websocket/progress_handler.py": {"executed_lines": [8, 9, 10, 11, 12, 14, 16, 19, 22, 23, 24, 25, 26, 29, 32, 33, 34, 40, 41, 45, 50, 53, 54, 57, 77, 88, 96, 97, 116, 118, 119, 120, 126, 127, 136, 144, 145, 162, 171, 172, 183, 191, 192, 210, 211, 219, 230, 231, 232, 236, 237, 245, 256, 257, 258], "summary": {"covered_lines": 55, "num_statements": 62, "percent_covered": 88.70967741935483, "percent_covered_display": "89", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 88.70967741935483, "percent_statements_covered_display": "89"}, "missing_lines": [123, 124, 201, 233, 234, 259, 260], "excluded_lines": [], "functions": {"progress_message": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "ProgressHandler.broadcast_progress": {"executed_lines": [116, 118, 119, 120], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [123, 124], "excluded_lines": [], "start_line": 97}, "ProgressHandler.broadcast_agent_start": {"executed_lines": [136], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 127}, "ProgressHandler.broadcast_agent_update": {"executed_lines": [162], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 145}, "ProgressHandler.broadcast_agent_complete": {"executed_lines": [183], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 172}, "ProgressHandler.broadcast_agent_failed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [201], "excluded_lines": [], "start_line": 192}, "ProgressHandler.broadcast_conversion_complete": {"executed_lines": [219, 230, 231, 232], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [233, 234], "excluded_lines": [], "start_line": 211}, "ProgressHandler.broadcast_conversion_failed": {"executed_lines": [245, 256, 257, 258], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [259, 260], "excluded_lines": [], "start_line": 237}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 16, 19, 22, 23, 24, 25, 26, 29, 32, 33, 34, 40, 41, 45, 50, 53, 54, 57, 88, 96, 97, 126, 127, 144, 145, 171, 172, 191, 192, 210, 211, 236, 237], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AgentStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "ProgressMessageData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "ProgressMessage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "ProgressHandler": {"executed_lines": [116, 118, 119, 120, 136, 162, 183, 219, 230, 231, 232, 245, 256, 257, 258], "summary": {"covered_lines": 15, "num_statements": 22, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 68.18181818181819, "percent_statements_covered_display": "68"}, "missing_lines": [123, 124, 201, 233, 234, 259, 260], "excluded_lines": [], "start_line": 88}, "": {"executed_lines": [8, 9, 10, 11, 12, 14, 16, 19, 22, 23, 24, 25, 26, 29, 32, 33, 34, 40, 41, 45, 50, 53, 54, 57, 77, 88, 96, 97, 126, 127, 144, 145, 171, 172, 191, 192, 210, 211, 236, 237], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}}, "totals": {"covered_lines": 33188, "num_statements": 40937, "percent_covered": 81.07091384322251, "percent_covered_display": "81", "missing_lines": 7749, "excluded_lines": 6, "percent_statements_covered": 81.07091384322251, "percent_statements_covered_display": "81"}} \ No newline at end of file diff --git a/frontend/src/components/BehaviorEditor/VisualEditor/VisualEditor.tsx b/frontend/src/components/BehaviorEditor/VisualEditor/VisualEditor.tsx index 5b931d4c..37a564e7 100644 --- a/frontend/src/components/BehaviorEditor/VisualEditor/VisualEditor.tsx +++ b/frontend/src/components/BehaviorEditor/VisualEditor/VisualEditor.tsx @@ -131,7 +131,12 @@ export const VisualEditor: React.FC = ({ } const category = categories.find((c) => c.id === categoryId); if (!category) return []; - return fields.filter((field) => category.fields.includes(field.name)); + + // ⚡ Bolt optimization: Convert filter criteria array into a Set first + // to enable O(1) lookups during the filter pass, reducing overall complexity + // from O(N*M) to O(N+M) and preventing sluggish renders with larger datasets. + const fieldSet = new Set(category.fields); + return fields.filter((field) => fieldSet.has(field.name)); }, [fields, categories] ); diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..7518fc90 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3 @@ +version = 1 +revision = 3 +requires-python = ">=3.12"