-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoverage.json
More file actions
1 lines (1 loc) · 120 KB
/
coverage.json
File metadata and controls
1 lines (1 loc) · 120 KB
1
{"meta": {"format": 3, "version": "7.12.0", "timestamp": "2025-12-10T19:47:49.146731", "branch_coverage": false, "show_contexts": false}, "files": {"src/parsec/__init__.py": {"executed_lines": [1, 8, 17, 18, 19, 20, 21, 22, 23, 25, 27], "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": [], "functions": {"": {"executed_lines": [1, 8, 17, 18, 19, 20, 21, 22, 23, 25, 27], "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": []}}, "classes": {"": {"executed_lines": [1, 8, 17, 18, 19, 20, 21, 22, 23, 25, 27], "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": []}}}, "src/parsec/cache/__init__.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "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, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/cache/base.py": {"executed_lines": [1, 2, 4, 5, 7, 8, 12, 13, 17, 18, 22, 23, 27, 28, 32, 33], "summary": {"covered_lines": 15, "num_statements": 21, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [10, 15, 20, 25, 30, 35], "excluded_lines": [], "functions": {"BaseCache.get": {"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": [10], "excluded_lines": []}, "BaseCache.set": {"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": [15], "excluded_lines": []}, "BaseCache.delete": {"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": [20], "excluded_lines": []}, "BaseCache.clear": {"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": [25], "excluded_lines": []}, "BaseCache.exists": {"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": []}, "BaseCache.get_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": [35], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 12, 13, 17, 18, 22, 23, 27, 28, 32, 33], "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": []}}, "classes": {"BaseCache": {"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": [10, 15, 20, 25, 30, 35], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 7, 8, 12, 13, 17, 18, 22, 23, 27, 28, 32, 33], "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": []}}}, "src/parsec/cache/keys.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 47, 50, 51, 52, 54, 56, 58, 65, 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": [], "functions": {"generate_cache_key": {"executed_lines": [47, 50, 51, 52, 54, 56, 58, 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": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 8, 47, 50, 51, 52, 54, 56, 58, 65, 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": []}}}, "src/parsec/cache/memory.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 10, 33, 41, 42, 43, 44, 45, 46, 48, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 94, 96, 97, 99, 100, 102, 108, 110, 112, 113, 115, 125, 126, 128, 135, 136, 138, 154, 169, 170, 171, 173], "summary": {"covered_lines": 49, "num_statements": 51, "percent_covered": 96.07843137254902, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.07843137254902, "percent_statements_covered_display": "96"}, "missing_lines": [151, 152], "excluded_lines": [], "functions": {"InMemoryCache.__init__": {"executed_lines": [41, 42, 43, 44, 45, 46], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "InMemoryCache.get": {"executed_lines": [66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77], "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": []}, "InMemoryCache.set": {"executed_lines": [94, 96, 97, 99, 100, 102, 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": []}, "InMemoryCache._delete_unsafe": {"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": []}, "InMemoryCache.delete": {"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": []}, "InMemoryCache.clear": {"executed_lines": [135, 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": []}, "InMemoryCache.exists": {"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": [151, 152], "excluded_lines": []}, "InMemoryCache.get_stats": {"executed_lines": [169, 170, 171, 173], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 10, 33, 48, 79, 110, 115, 128, 138, 154], "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": []}}, "classes": {"InMemoryCache": {"executed_lines": [41, 42, 43, 44, 45, 46, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 94, 96, 97, 99, 100, 102, 108, 112, 113, 125, 126, 135, 136, 169, 170, 171, 173], "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": [151, 152], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 9, 10, 33, 48, 79, 110, 115, 128, 138, 154], "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": []}}}, "src/parsec/core/__init__.py": {"executed_lines": [1, 2, 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": [1, 2, 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": []}}, "classes": {"": {"executed_lines": [1, 2, 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": []}}}, "src/parsec/core/base.py": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 40, 42, 44, 45, 46, 49, 51, 52, 56, 57, 61, 65], "summary": {"covered_lines": 33, "num_statements": 38, "percent_covered": 86.84210526315789, "percent_covered_display": "87", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.84210526315789, "percent_statements_covered_display": "87"}, "missing_lines": [48, 54, 59, 63, 82], "excluded_lines": [], "functions": {"BaseLLMAdapter.__init__": {"executed_lines": [35, 36, 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": []}, "BaseLLMAdapter.get_client": {"executed_lines": [42, 44, 45, 46, 49], "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": [48], "excluded_lines": []}, "BaseLLMAdapter.generate": {"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": [54], "excluded_lines": []}, "BaseLLMAdapter.supports_native_structure_output": {"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": [59], "excluded_lines": []}, "BaseLLMAdapter.supports_streaming": {"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": []}, "BaseLLMAdapter.generate_stream": {"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": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 27, 28, 29, 31, 32, 34, 40, 51, 52, 56, 57, 61, 65], "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": []}}, "classes": {"ModelProviders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "OutputFormats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BaseLLMAdapter": {"executed_lines": [35, 36, 37, 38, 42, 44, 45, 46, 49], "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": [48, 54, 59, 63, 82], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 27, 28, 29, 31, 32, 34, 40, 51, 52, 56, 57, 61, 65], "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": []}}}, "src/parsec/core/schemas.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50], "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": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50], "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": []}}, "classes": {"ValidationStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "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": []}, "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": []}, "GenerationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "StreamChunk": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "StreamValidationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50], "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": []}}}, "src/parsec/enforcement/engine.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 25, 26, 28, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 55, 58, 66, 67, 73, 74, 77, 83, 84, 85, 87, 88, 89, 90, 93, 95, 96, 99, 100, 101, 104, 106, 108, 109, 110, 114, 116, 168, 170, 172, 175, 177, 180, 181], "summary": {"covered_lines": 64, "num_statements": 85, "percent_covered": 75.29411764705883, "percent_covered_display": "75", "missing_lines": 21, "excluded_lines": 2, "percent_statements_covered": 75.29411764705883, "percent_statements_covered_display": "75"}, "missing_lines": [75, 102, 121, 126, 128, 129, 131, 132, 133, 135, 149, 157, 158, 160, 163, 164, 165, 166, 185, 186, 195], "excluded_lines": [15, 16], "functions": {"EnforcementEngine.__init__": {"executed_lines": [40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 55], "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": []}, "EnforcementEngine.enforce": {"executed_lines": [66, 67, 73, 74, 77, 83, 84, 85, 87, 88, 89, 90, 93, 95, 96, 99, 100, 101, 104, 106, 108, 109, 114, 116, 168, 170, 172, 175, 177, 180, 181], "summary": {"covered_lines": 31, "num_statements": 52, "percent_covered": 59.61538461538461, "percent_covered_display": "60", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 59.61538461538461, "percent_statements_covered_display": "60"}, "missing_lines": [75, 102, 121, 126, 128, 129, 131, 132, 133, 135, 149, 157, 158, 160, 163, 164, 165, 166, 185, 186, 195], "excluded_lines": []}, "EnforcementEngine.enforce._generate": {"executed_lines": [110], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 25, 26, 28, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [15, 16]}}, "classes": {"EnforcedOutput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "EnforcementEngine": {"executed_lines": [40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 55, 66, 67, 73, 74, 77, 83, 84, 85, 87, 88, 89, 90, 93, 95, 96, 99, 100, 101, 104, 106, 108, 109, 110, 114, 116, 168, 170, 172, 175, 177, 180, 181], "summary": {"covered_lines": 43, "num_statements": 64, "percent_covered": 67.1875, "percent_covered_display": "67", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 67.1875, "percent_statements_covered_display": "67"}, "missing_lines": [75, 102, 121, 126, 128, 129, 131, 132, 133, 135, 149, 157, 158, 160, 163, 164, 165, 166, 185, 186, 195], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23, 25, 26, 28, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [15, 16]}}}, "src/parsec/logging.py": {"executed_lines": [2, 3, 4, 5, 13], "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": [6, 7, 10, 11, 12], "excluded_lines": [], "functions": {"get_logger": {"executed_lines": [3, 4, 5, 13], "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": [6, 7, 10, 11, 12], "excluded_lines": []}, "": {"executed_lines": [2], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [2, 3, 4, 5, 13], "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": [6, 7, 10, 11, 12], "excluded_lines": []}}}, "src/parsec/models/__init__.py": {"executed_lines": [1, 8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "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, 8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 8], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/models/adapters/__init__.py": {"executed_lines": [1, 3, 8, 21], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 23.076923076923077, "percent_covered_display": "23", "missing_lines": 10, "excluded_lines": 4, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23"}, "missing_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "excluded_lines": [3, 4, 5, 6], "functions": {"__getattr__": {"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": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "excluded_lines": []}, "": {"executed_lines": [1, 3, 8, 21], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [3, 4, 5, 6]}}, "classes": {"": {"executed_lines": [1, 3, 8, 21], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 23.076923076923077, "percent_covered_display": "23", "missing_lines": 10, "excluded_lines": 4, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23"}, "missing_lines": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "excluded_lines": [3, 4, 5, 6]}}}, "src/parsec/models/adapters/anthropic_adapter.py": {"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": [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 17, 19, 20, 21, 23, 24, 26, 27, 29, 31, 32, 33, 35, 40, 51, 53, 54, 56, 57, 58, 64, 66, 68, 69, 72, 73, 74, 75, 77, 78, 79, 86, 87, 88, 90, 99, 100, 102, 114, 116, 117, 119, 120, 121, 127, 129, 131, 132, 133, 135, 137, 138, 139, 145, 146, 147, 148], "excluded_lines": [], "functions": {"AnthropicAdapter.__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": [13, 14], "excluded_lines": []}, "AnthropicAdapter._initialize_client": {"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": [17], "excluded_lines": []}, "AnthropicAdapter.provider": {"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": [21], "excluded_lines": []}, "AnthropicAdapter.supports_native_structure_output": {"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": [24], "excluded_lines": []}, "AnthropicAdapter.supports_streaming": {"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": []}, "AnthropicAdapter.generate": {"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": [31, 32, 33, 35, 40, 51, 53, 54, 56, 57, 58, 64, 66, 68, 69, 72, 73, 74, 75, 77, 78, 79, 86, 87, 88], "excluded_lines": []}, "AnthropicAdapter.generate_stream": {"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": [99, 100, 102, 114, 116, 117, 119, 120, 121, 127, 129, 131, 132, 133], "excluded_lines": []}, "AnthropicAdapter.health_check": {"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": [137, 138, 139, 145, 146, 147, 148], "excluded_lines": []}, "": {"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, 3, 4, 5, 6, 7, 9, 12, 16, 19, 20, 23, 26, 29, 90, 135], "excluded_lines": []}}, "classes": {"AnthropicAdapter": {"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": [13, 14, 17, 21, 24, 27, 31, 32, 33, 35, 40, 51, 53, 54, 56, 57, 58, 64, 66, 68, 69, 72, 73, 74, 75, 77, 78, 79, 86, 87, 88, 99, 100, 102, 114, 116, 117, 119, 120, 121, 127, 129, 131, 132, 133, 137, 138, 139, 145, 146, 147, 148], "excluded_lines": []}, "": {"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, 3, 4, 5, 6, 7, 9, 12, 16, 19, 20, 23, 26, 29, 90, 135], "excluded_lines": []}}}, "src/parsec/models/adapters/gemini_adapter.py": {"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": [1, 2, 3, 4, 5, 6, 7, 10, 13, 14, 15, 17, 19, 20, 22, 23, 24, 26, 28, 30, 32, 34, 55, 56, 58, 63, 67, 68, 71, 72, 74, 75, 77, 78, 79, 85, 87, 89, 94, 97, 98, 99, 103, 104, 111, 112, 113, 115, 136, 139, 143, 144, 147, 148, 150, 151, 153, 154, 155, 161, 164, 170, 171, 172, 174, 181, 182, 184, 189, 190, 191, 192], "excluded_lines": [], "functions": {"GeminiAdapter.__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": [14, 15], "excluded_lines": []}, "GeminiAdapter._initialize_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": [19, 20], "excluded_lines": []}, "GeminiAdapter.provider": {"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": [24], "excluded_lines": []}, "GeminiAdapter.supports_native_structure_output": {"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": [28], "excluded_lines": []}, "GeminiAdapter.supports_streaming": {"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": [32], "excluded_lines": []}, "GeminiAdapter.generate": {"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": [55, 56, 58, 63, 67, 68, 71, 72, 74, 75, 77, 78, 79, 85, 87, 89, 94, 97, 98, 99, 103, 104, 111, 112, 113], "excluded_lines": []}, "GeminiAdapter.generate_stream": {"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": [136, 139, 143, 144, 147, 148, 150, 151, 153, 154, 155, 161, 164, 170, 171, 172], "excluded_lines": []}, "GeminiAdapter.health_check": {"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, 189, 190, 191, 192], "excluded_lines": []}, "": {"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, 3, 4, 5, 6, 7, 10, 13, 17, 22, 23, 26, 30, 34, 115, 174], "excluded_lines": []}}, "classes": {"GeminiAdapter": {"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": [14, 15, 19, 20, 24, 28, 32, 55, 56, 58, 63, 67, 68, 71, 72, 74, 75, 77, 78, 79, 85, 87, 89, 94, 97, 98, 99, 103, 104, 111, 112, 113, 136, 139, 143, 144, 147, 148, 150, 151, 153, 154, 155, 161, 164, 170, 171, 172, 181, 182, 184, 189, 190, 191, 192], "excluded_lines": []}, "": {"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, 3, 4, 5, 6, 7, 10, 13, 17, 22, 23, 26, 30, 34, 115, 174], "excluded_lines": []}}}, "src/parsec/models/adapters/ollama_adapter.py": {"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": [2, 3, 4, 5, 6, 8, 9, 11, 14, 15, 16, 17, 18, 20, 22, 23, 24, 26, 28, 30, 32, 34, 36, 37, 38, 40, 41, 42, 44, 45, 47, 48, 50, 52, 53, 54, 57, 68, 69, 73, 74, 75, 76, 77, 78, 84, 87, 94, 95, 96], "excluded_lines": [], "functions": {"OllamaAdapter.__init__": {"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": [15, 16, 17, 18], "excluded_lines": []}, "OllamaAdapter._initialize_client": {"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": [22, 23, 24], "excluded_lines": []}, "OllamaAdapter.__aenter__": {"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": [28], "excluded_lines": []}, "OllamaAdapter.__aexit__": {"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": [32], "excluded_lines": []}, "OllamaAdapter.close": {"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": [36, 37, 38], "excluded_lines": []}, "OllamaAdapter.provider": {"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": [42], "excluded_lines": []}, "OllamaAdapter.supports_native_structure_output": {"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": []}, "OllamaAdapter.supports_streaming": {"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": [48], "excluded_lines": []}, "OllamaAdapter.generate": {"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": [52, 53, 54, 57, 68, 69, 73, 74, 75, 76, 77, 78, 84, 87, 94, 95, 96], "excluded_lines": []}, "": {"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": [2, 3, 4, 5, 6, 8, 9, 11, 14, 20, 26, 30, 34, 40, 41, 44, 47, 50], "excluded_lines": []}}, "classes": {"OllamaAdapter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [15, 16, 17, 18, 22, 23, 24, 28, 32, 36, 37, 38, 42, 45, 48, 52, 53, 54, 57, 68, 69, 73, 74, 75, 76, 77, 78, 84, 87, 94, 95, 96], "excluded_lines": []}, "": {"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": [2, 3, 4, 5, 6, 8, 9, 11, 14, 20, 26, 30, 34, 40, 41, 44, 47, 50], "excluded_lines": []}}}, "src/parsec/models/adapters/openai_adapter.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 16, 17, 19, 20, 21, 23, 24, 26, 29, 31, 32, 34, 39, 42, 43, 44, 46, 49, 51, 52, 53, 61, 62, 64, 71, 72, 73, 77, 115], "summary": {"covered_lines": 40, "num_statements": 62, "percent_covered": 64.51612903225806, "percent_covered_display": "65", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 64.51612903225806, "percent_statements_covered_display": "65"}, "missing_lines": [27, 47, 86, 88, 91, 92, 93, 95, 96, 98, 99, 101, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122], "excluded_lines": [], "functions": {"OpenAIAdapter.__init__": {"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": []}, "OpenAIAdapter._initialize_client": {"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": []}, "OpenAIAdapter.provider": {"executed_lines": [21], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "OpenAIAdapter.supports_native_structure_output": {"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": []}, "OpenAIAdapter.supports_streaming": {"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": []}, "OpenAIAdapter.generate": {"executed_lines": [31, 32, 34, 39, 42, 43, 44, 46, 49, 51, 52, 53, 61, 62, 64, 71, 72, 73], "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": [47], "excluded_lines": []}, "OpenAIAdapter.generate_stream": {"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": [86, 88, 91, 92, 93, 95, 96, 98, 99, 101, 111, 112, 113], "excluded_lines": []}, "OpenAIAdapter.health_check": {"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": [116, 117, 118, 119, 120, 121, 122], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 16, 19, 20, 23, 26, 29, 77, 115], "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": []}}, "classes": {"OpenAIAdapter": {"executed_lines": [13, 14, 17, 21, 24, 31, 32, 34, 39, 42, 43, 44, 46, 49, 51, 52, 53, 61, 62, 64, 71, 72, 73], "summary": {"covered_lines": 23, "num_statements": 45, "percent_covered": 51.111111111111114, "percent_covered_display": "51", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 51.111111111111114, "percent_statements_covered_display": "51"}, "missing_lines": [27, 47, 86, 88, 91, 92, 93, 95, 96, 98, 99, 101, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 16, 19, 20, 23, 26, 29, 77, 115], "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": []}}}, "src/parsec/prompts/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "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, 4, 5, 6, 7, 9], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/prompts/analytics.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 28, 29, 35, 36, 42, 43, 49, 50, 57, 58, 65, 72, 73, 75, 78, 110, 134, 141, 149], "summary": {"covered_lines": 38, "num_statements": 115, "percent_covered": 33.04347826086956, "percent_covered_display": "33", "missing_lines": 77, "excluded_lines": 0, "percent_statements_covered": 33.04347826086956, "percent_statements_covered_display": "33"}, "missing_lines": [24, 25, 26, 31, 32, 33, 38, 39, 40, 45, 46, 47, 51, 52, 53, 54, 55, 59, 60, 61, 62, 63, 67, 68, 69, 76, 88, 90, 91, 93, 94, 96, 97, 99, 101, 102, 103, 104, 105, 107, 108, 111, 112, 114, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 136, 143, 150, 151, 152, 154, 156, 157, 159, 160, 161, 162, 164, 165, 166, 167, 169, 170, 171, 173], "excluded_lines": [], "functions": {"TemplateMetrics.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": [24, 25, 26], "excluded_lines": []}, "TemplateMetrics.average_latency_ms": {"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": [31, 32, 33], "excluded_lines": []}, "TemplateMetrics.average_tokens": {"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": [38, 39, 40], "excluded_lines": []}, "TemplateMetrics.average_retries": {"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": [45, 46, 47], "excluded_lines": []}, "TemplateMetrics.p95_latency_ms": {"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": [51, 52, 53, 54, 55], "excluded_lines": []}, "TemplateMetrics.p99_latency_ms": {"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": [59, 60, 61, 62, 63], "excluded_lines": []}, "TemplateMetrics.get_error_breakdown": {"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, 68, 69], "excluded_lines": []}, "TemplateAnalytics.__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": [76], "excluded_lines": []}, "TemplateAnalytics.record_result": {"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": [88, 90, 91, 93, 94, 96, 97, 99, 101, 102, 103, 104, 105, 107, 108], "excluded_lines": []}, "TemplateAnalytics.get_metrics": {"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": [111, 112, 114, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132], "excluded_lines": []}, "TemplateAnalytics.get_all_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": [136], "excluded_lines": []}, "TemplateAnalytics.compare_versions": {"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": [143], "excluded_lines": []}, "TemplateAnalytics.get_best_performing_version": {"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": [150, 151, 152, 154, 156, 157, 159, 160, 161, 162, 164, 165, 166, 167, 169, 170, 171, 173], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 28, 29, 35, 36, 42, 43, 49, 50, 57, 58, 65, 72, 73, 75, 78, 110, 134, 141, 149], "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": []}}, "classes": {"TemplateMetrics": {"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": [24, 25, 26, 31, 32, 33, 38, 39, 40, 45, 46, 47, 51, 52, 53, 54, 55, 59, 60, 61, 62, 63, 67, 68, 69], "excluded_lines": []}, "TemplateAnalytics": {"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": [76, 88, 90, 91, 93, 94, 96, 97, 99, 101, 102, 103, 104, 105, 107, 108, 111, 112, 114, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 132, 136, 143, 150, 151, 152, 154, 156, 157, 159, 160, 161, 162, 164, 165, 166, 167, 169, 170, 171, 173], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 28, 29, 35, 36, 42, 43, 49, 50, 57, 58, 65, 72, 73, 75, 78, 110, 134, 141, 149], "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": []}}}, "src/parsec/prompts/manager.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 23, 47], "summary": {"covered_lines": 9, "num_statements": 45, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [8, 9, 19, 20, 21, 25, 26, 27, 29, 30, 32, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 49, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 70, 71, 78], "excluded_lines": [], "functions": {"TemplateManager.__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": [8, 9], "excluded_lines": []}, "TemplateManager.enforce_with_template": {"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": [19, 20, 21], "excluded_lines": []}, "TemplateManager.load_templates_from_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": [25, 26, 27, 29, 30, 32, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45], "excluded_lines": []}, "TemplateManager.validate_all_templates": {"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": [49, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 70, 71, 78], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 23, 47], "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": []}}, "classes": {"TemplateManager": {"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": [8, 9, 19, 20, 21, 25, 26, 27, 29, 30, 32, 34, 35, 37, 38, 39, 40, 41, 42, 43, 45, 49, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 63, 70, 71, 78], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 23, 47], "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": []}}}, "src/parsec/prompts/registry.py": {"executed_lines": [1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 17, 19, 20, 22, 24, 26, 27, 29, 30, 31, 32, 33, 35, 36, 38, 40, 42, 44, 45, 46, 48, 50, 51, 52, 53, 54, 56, 58, 59, 61, 63, 66, 67, 68, 71, 72, 75, 77, 78, 79, 80, 81, 83, 84, 86, 88, 89, 91, 92, 94, 95, 97, 98, 99, 100, 102, 104, 106, 109, 110], "summary": {"covered_lines": 70, "num_statements": 72, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.22222222222223, "percent_statements_covered_display": "97"}, "missing_lines": [111, 113], "excluded_lines": [], "functions": {"TemplateRegistry.__init__": {"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": []}, "TemplateRegistry.register": {"executed_lines": [14, 16, 17, 19, 20, 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": []}, "TemplateRegistry.get": {"executed_lines": [26, 27, 29, 30, 31, 32, 33, 35, 36], "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": []}, "TemplateRegistry.list_templates": {"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": []}, "TemplateRegistry.list_versions": {"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": []}, "TemplateRegistry.exists": {"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": []}, "TemplateRegistry.delete": {"executed_lines": [58, 59, 61, 63, 66, 67, 68, 71, 72], "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": []}, "TemplateRegistry.save_to_disk": {"executed_lines": [77, 78, 79, 80, 81, 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": []}, "TemplateRegistry.load_from_disk": {"executed_lines": [88, 89, 91, 92, 94, 95, 97, 98, 99, 100], "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": []}, "TemplateRegistry._get_latest_version": {"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": []}, "TemplateRegistry._version_sort_key": {"executed_lines": [109, 110], "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": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 8, 12, 24, 38, 42, 48, 56, 75, 86, 102, 106], "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": []}}, "classes": {"TemplateRegistry": {"executed_lines": [10, 14, 16, 17, 19, 20, 22, 26, 27, 29, 30, 31, 32, 33, 35, 36, 40, 44, 45, 46, 50, 51, 52, 53, 54, 58, 59, 61, 63, 66, 67, 68, 71, 72, 77, 78, 79, 80, 81, 83, 84, 88, 89, 91, 92, 94, 95, 97, 98, 99, 100, 104, 109, 110], "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": [111, 113], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 8, 12, 24, 38, 42, 48, 56, 75, 86, 102, 106], "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": []}}}, "src/parsec/prompts/template.py": {"executed_lines": [1, 3, 5, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 26, 27, 28, 30, 31, 32, 37, 38, 39, 40, 43, 45, 47, 55, 56, 58, 67, 72], "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": [], "functions": {"PromptTemplate.__init__": {"executed_lines": [13, 14, 15, 16, 17, 19, 20, 21], "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": []}, "PromptTemplate.render": {"executed_lines": [24, 26, 27, 28, 30, 31, 32, 37, 38, 39, 40, 43], "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": []}, "PromptTemplate.to_dict": {"executed_lines": [47], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "PromptTemplate.from_dict": {"executed_lines": [58, 67, 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": []}, "": {"executed_lines": [1, 3, 5, 23, 45, 55, 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": []}}, "classes": {"PromptTemplate": {"executed_lines": [13, 14, 15, 16, 17, 19, 20, 21, 24, 26, 27, 28, 30, 31, 32, 37, 38, 39, 40, 43, 47, 58, 67, 72], "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": []}, "": {"executed_lines": [1, 3, 5, 23, 45, 55, 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": []}}}, "src/parsec/prompts/testing.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 50, 81, 146, 154], "summary": {"covered_lines": 28, "num_statements": 103, "percent_covered": 27.184466019417474, "percent_covered_display": "27", "missing_lines": 75, "excluded_lines": 0, "percent_statements_covered": 27.184466019417474, "percent_statements_covered_display": "27"}, "missing_lines": [43, 44, 45, 46, 47, 48, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 100, 101, 102, 103, 104, 105, 106, 109, 110, 111, 114, 116, 117, 118, 119, 122, 130, 131, 134, 135, 136, 138, 148, 149, 150, 151, 152, 156, 157, 158], "excluded_lines": [], "functions": {"ABTest.__init__": {"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": [43, 44, 45, 46, 47, 48], "excluded_lines": []}, "ABTest.select_variant": {"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": [52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79], "excluded_lines": []}, "ABTest.get_results": {"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": [83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 100, 101, 102, 103, 104, 105, 106, 109, 110, 111, 114, 116, 117, 118, 119, 122, 130, 131, 134, 135, 136, 138], "excluded_lines": []}, "ABTest._calculate_z_score": {"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": [148, 149, 150, 151, 152], "excluded_lines": []}, "ABTest._z_to_p_value": {"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": [156, 157, 158], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 50, 81, 146, 154], "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": []}}, "classes": {"TrafficSplitStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "Variant": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ABTestResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ABTest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 75, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 75, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [43, 44, 45, 46, 47, 48, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 100, 101, 102, 103, 104, 105, 106, 109, 110, 111, 114, 116, 117, 118, 119, 122, 130, 131, 134, 135, 136, 138, 148, 149, 150, 151, 152, 156, 157, 158], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 50, 81, 146, 154], "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": []}}}, "src/parsec/resilience/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "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, 4, 5, 6, 7, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/resilience/backoff.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 23, 37, 38, 39, 41, 52, 55, 58, 59, 61, 63, 70, 71], "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": [], "functions": {"ExponentialBackoff.__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": []}, "ExponentialBackoff.calculate": {"executed_lines": [52, 55, 58, 59, 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": []}, "ExponentialBackoff.sleep": {"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": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 23, 41, 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": []}}, "classes": {"ExponentialBackoff": {"executed_lines": [37, 38, 39, 52, 55, 58, 59, 61, 70, 71], "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": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 23, 41, 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": []}}}, "src/parsec/resilience/circuit_breaker.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 24, 25, 29, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 46, 47, 48, 49, 51, 55, 56, 57, 58, 59, 60, 61, 63, 65, 66, 67, 69, 70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 99, 100, 101, 103, 105], "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": [], "functions": {"CircuitBreaker.__init__": {"executed_lines": [34, 35, 36, 37, 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": []}, "CircuitBreaker.call": {"executed_lines": [45, 46, 47, 48, 49, 51, 55, 56, 57, 58, 59, 60, 61], "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": []}, "CircuitBreaker._should_attempt_reset": {"executed_lines": [65, 66, 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": []}, "CircuitBreaker._reset": {"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": []}, "CircuitBreaker._on_failure": {"executed_lines": [76, 77, 78, 79, 80, 81, 82, 83, 84, 85], "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": []}, "CircuitBreaker._on_success": {"executed_lines": [88, 89, 90, 91, 92, 93, 94, 95], "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": []}, "CircuitBreaker.reset": {"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": []}, "CircuitBreaker.get_state": {"executed_lines": [105], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 24, 25, 29, 43, 63, 69, 75, 87, 97, 103], "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": []}}, "classes": {"CircuitBreakerState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker": {"executed_lines": [34, 35, 36, 37, 38, 39, 40, 41, 45, 46, 47, 48, 49, 51, 55, 56, 57, 58, 59, 60, 61, 65, 66, 67, 70, 71, 72, 73, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 99, 100, 101, 105], "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": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 24, 25, 29, 43, 63, 69, 75, 87, 97, 103], "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": []}}}, "src/parsec/resilience/failover.py": {"executed_lines": [1, 2, 3, 5, 6, 13, 14, 15, 16, 17, 19, 20, 22, 23, 25, 27, 29, 30, 31, 32, 41, 42, 43, 45, 46, 47], "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": [39, 40, 49], "excluded_lines": [], "functions": {"FailoverChain.__init__": {"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": []}, "FailoverChain.model": {"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": []}, "FailoverChain.generate": {"executed_lines": [27, 29, 30, 31, 32, 41, 42, 43, 45, 46, 47], "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": [39, 40, 49], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 13, 19, 20, 25], "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": []}}, "classes": {"FailoverChain": {"executed_lines": [14, 15, 16, 17, 22, 23, 27, 29, 30, 31, 32, 41, 42, 43, 45, 46, 47], "summary": {"covered_lines": 17, "num_statements": 20, "percent_covered": 85.0, "percent_covered_display": "85", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 85.0, "percent_statements_covered_display": "85"}, "missing_lines": [39, 40, 49], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 13, 19, 20, 25], "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": []}}}, "src/parsec/resilience/rate_limiter.py": {"executed_lines": [1, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 30, 38, 39, 40, 41, 42, 44, 54, 55, 57, 58, 59, 63, 66, 67, 68, 71, 72, 75, 77, 79, 80, 81, 87, 88, 106, 122, 123, 126, 127, 132, 133, 138, 139, 144, 150, 151, 152, 154, 165, 166, 168, 169, 172, 173, 174, 176, 180, 181, 182, 184, 191, 197, 198, 204, 207, 208, 222, 224, 225, 226, 228, 246, 252, 257, 265, 267, 268, 272, 278, 280, 282, 289], "summary": {"covered_lines": 83, "num_statements": 85, "percent_covered": 97.6470588235294, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 97.6470588235294, "percent_statements_covered_display": "98"}, "missing_lines": [145, 177], "excluded_lines": [], "functions": {"TokenBucket.__init__": {"executed_lines": [38, 39, 40, 41, 42], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "TokenBucket.consume": {"executed_lines": [54, 55, 57, 58, 59, 63, 66, 67, 68, 71, 72, 75], "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": []}, "TokenBucket.get_available_tokens": {"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": []}, "RateLimiter.__init__": {"executed_lines": [122, 123, 126, 127, 132, 133, 138, 139, 144, 150, 151, 152], "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": [145], "excluded_lines": []}, "RateLimiter.acquire": {"executed_lines": [165, 166, 168, 169, 172, 173, 174, 176, 180, 181, 182], "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": [177], "excluded_lines": []}, "RateLimiter.get_stats": {"executed_lines": [191, 197, 198, 204], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "PerProviderRateLimiter.__init__": {"executed_lines": [224, 225, 226], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "PerProviderRateLimiter.set_provider_limits": {"executed_lines": [246, 252], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "PerProviderRateLimiter.acquire": {"executed_lines": [265, 267, 268, 272, 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": []}, "PerProviderRateLimiter.get_stats": {"executed_lines": [282], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 30, 44, 77, 87, 88, 106, 154, 184, 207, 208, 222, 228, 257, 280, 289], "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": []}}, "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": []}, "TokenBucket": {"executed_lines": [38, 39, 40, 41, 42, 54, 55, 57, 58, 59, 63, 66, 67, 68, 71, 72, 75, 79, 80, 81], "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": []}, "RateLimiter": {"executed_lines": [122, 123, 126, 127, 132, 133, 138, 139, 144, 150, 151, 152, 165, 166, 168, 169, 172, 173, 174, 176, 180, 181, 182, 191, 197, 198, 204], "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": [145, 177], "excluded_lines": []}, "PerProviderRateLimiter": {"executed_lines": [224, 225, 226, 246, 252, 265, 267, 268, 272, 278, 282], "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": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 30, 44, 77, 87, 88, 106, 154, 184, 207, 208, 222, 228, 257, 280, 289], "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": []}}}, "src/parsec/resilience/retry.py": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 39], "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": [41], "excluded_lines": [], "functions": {"RetryPolicy.is_retryable": {"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": []}, "get_retry_policy": {"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": [41], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 22, 39], "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": []}}, "classes": {"OperationType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "RetryPolicy": {"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": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 18, 22, 39], "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": [41], "excluded_lines": []}}}, "src/parsec/training/__init__.py": {"executed_lines": [1, 2, 4], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "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, 4], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/training/collector.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 12, 14, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 39, 40, 41, 44, 45, 47, 48, 50, 52, 53, 55, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 69, 71, 72, 73, 75, 76, 77, 78, 83, 84, 86, 88, 89, 90, 91, 95, 96, 97, 99, 100, 102, 103, 104, 105, 106, 108, 109, 110, 113, 114, 116, 117, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 138, 139, 141, 143, 144, 145, 147, 148, 150, 153, 154, 159, 160, 163, 164, 166, 169, 170, 171, 182, 185, 186, 188, 189, 190, 191, 192, 193, 195, 197, 198, 201, 203, 209, 215, 216, 217, 218, 220, 231, 233, 235, 236, 237, 239, 240, 241, 242, 244, 245, 246, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 260, 261, 262, 263, 265, 267, 268, 270, 271, 272, 274, 275, 276, 278, 280, 281, 282], "summary": {"covered_lines": 162, "num_statements": 181, "percent_covered": 89.50276243093923, "percent_covered_display": "90", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 89.50276243093923, "percent_statements_covered_display": "90"}, "missing_lines": [42, 81, 93, 118, 119, 120, 121, 136, 155, 156, 199, 204, 205, 206, 207, 210, 211, 212, 213], "excluded_lines": [], "functions": {"DatasetCollector.__init__": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 39, 40, 41], "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": [42], "excluded_lines": []}, "DatasetCollector.collect": {"executed_lines": [45, 47, 48, 50, 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": []}, "DatasetCollector._should_save": {"executed_lines": [56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 69], "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": []}, "DatasetCollector.__assign_split": {"executed_lines": [72, 73, 75, 76, 77, 78], "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": [81], "excluded_lines": []}, "DatasetCollector._get_split_path": {"executed_lines": [84, 86, 88, 89, 90, 91], "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": [93], "excluded_lines": []}, "DatasetCollector._write_batch": {"executed_lines": [96, 97, 99, 100, 102, 103, 104, 105, 106, 108, 109, 110, 113, 114, 116, 117, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 138, 139], "summary": {"covered_lines": 28, "num_statements": 33, "percent_covered": 84.84848484848484, "percent_covered_display": "85", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 84.84848484848484, "percent_statements_covered_display": "85"}, "missing_lines": [118, 119, 120, 121, 136], "excluded_lines": []}, "DatasetCollector._write_jsonl": {"executed_lines": [143, 144, 145, 147, 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": []}, "DatasetCollector._write_json": {"executed_lines": [153, 154, 159, 160, 163, 164], "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": [155, 156], "excluded_lines": []}, "DatasetCollector._write_csv": {"executed_lines": [169, 170, 171, 182, 185, 186, 188, 189, 190, 191, 192, 193], "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": []}, "DatasetCollector._read_all_examples": {"executed_lines": [197, 198, 201, 203, 209, 215, 216, 217, 218, 220, 231, 233], "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": [199, 204, 205, 206, 207, 210, 211, 212, 213], "excluded_lines": []}, "DatasetCollector._get_versioned_path": {"executed_lines": [236, 237, 239, 240, 241, 242, 244, 245, 246, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258], "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": []}, "DatasetCollector.close": {"executed_lines": [261, 262, 263, 265], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DatasetCollector.export": {"executed_lines": [268, 270, 271, 272, 274, 275, 276, 278, 280, 281, 282], "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": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 12, 14, 44, 55, 71, 83, 95, 141, 150, 166, 195, 235, 260, 267], "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": []}}, "classes": {"DatasetCollector": {"executed_lines": [24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 37, 39, 40, 41, 45, 47, 48, 50, 52, 53, 56, 57, 59, 60, 61, 63, 64, 65, 66, 67, 69, 72, 73, 75, 76, 77, 78, 84, 86, 88, 89, 90, 91, 96, 97, 99, 100, 102, 103, 104, 105, 106, 108, 109, 110, 113, 114, 116, 117, 123, 125, 126, 127, 129, 130, 131, 132, 133, 134, 138, 139, 143, 144, 145, 147, 148, 153, 154, 159, 160, 163, 164, 169, 170, 171, 182, 185, 186, 188, 189, 190, 191, 192, 193, 197, 198, 201, 203, 209, 215, 216, 217, 218, 220, 231, 233, 236, 237, 239, 240, 241, 242, 244, 245, 246, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 261, 262, 263, 265, 268, 270, 271, 272, 274, 275, 276, 278, 280, 281, 282], "summary": {"covered_lines": 141, "num_statements": 160, "percent_covered": 88.125, "percent_covered_display": "88", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 88.125, "percent_statements_covered_display": "88"}, "missing_lines": [42, 81, 93, 118, 119, 120, 121, 136, 155, 156, 199, 204, 205, 206, 207, 210, 211, 212, 213], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 8, 11, 12, 14, 44, 55, 71, 83, 95, 141, 150, 166, 195, 235, 260, 267], "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": []}}}, "src/parsec/training/schemas.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23], "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": [], "functions": {"CollectedExample.serialize_timestamp": {"executed_lines": [23], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22], "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": []}}, "classes": {"CollectedExample": {"executed_lines": [23], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22], "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": []}}}, "src/parsec/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": []}}, "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": []}}}, "src/parsec/utils/partial_json.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 76, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 76, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 14, 17, 18, 28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 45, 47, 48, 58, 59, 60, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 98, 100, 101, 112, 113, 114, 115, 117, 118, 129, 130, 132, 133, 134, 136, 137, 139, 140, 150, 151, 152, 153, 154], "excluded_lines": [], "functions": {"PartialJSONParser.parse": {"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": [28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 45], "excluded_lines": []}, "PartialJSONParser._attempt_fix": {"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": [58, 59, 60, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 98], "excluded_lines": []}, "PartialJSONParser.extract_field": {"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, 113, 114, 115], "excluded_lines": []}, "PartialJSONParser.get_completion_percent": {"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": [129, 130, 132, 133, 134, 136, 137], "excluded_lines": []}, "PartialJSONParser.is_likely_complete": {"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": [150, 151, 152, 153, 154], "excluded_lines": []}, "": {"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": [9, 10, 11, 14, 17, 18, 47, 48, 100, 101, 117, 118, 139, 140], "excluded_lines": []}}, "classes": {"PartialJSONParser": {"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": [28, 29, 32, 33, 34, 35, 38, 39, 40, 41, 42, 43, 45, 58, 59, 60, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95, 96, 98, 112, 113, 114, 115, 129, 130, 132, 133, 134, 136, 137, 150, 151, 152, 153, 154], "excluded_lines": []}, "": {"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": [9, 10, 11, 14, 17, 18, 47, 48, 100, 101, 117, 118, 139, 140], "excluded_lines": []}}}, "src/parsec/validators/__init__.py": {"executed_lines": [1, 2, 3, 4, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "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, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "src/parsec/validators/base_validator.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 13, 14, 18, 20, 22, 23], "summary": {"covered_lines": 12, "num_statements": 24, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [11, 16, 25, 26, 27, 29, 30, 31, 33, 34, 35, 37], "excluded_lines": [], "functions": {"BaseValidator.validate": {"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": [11], "excluded_lines": []}, "BaseValidator.repair": {"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": [16], "excluded_lines": []}, "BaseValidator.validate_and_repair": {"executed_lines": [20, 22, 23], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 23.076923076923077, "percent_covered_display": "23", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23"}, "missing_lines": [25, 26, 27, 29, 30, 31, 33, 34, 35, 37], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 13, 14, 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": []}}, "classes": {"BaseValidator": {"executed_lines": [20, 22, 23], "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": [11, 16, 25, 26, 27, 29, 30, 31, 33, 34, 35, 37], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 13, 14, 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": []}}}, "src/parsec/validators/json_validator.py": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 27, 33, 34, 36, 37, 43, 45, 46, 48, 49, 57, 64, 66], "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": [], "functions": {"JSONValidator.__init__": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "JSONValidator.validate": {"executed_lines": [15, 17, 18, 19, 20, 27, 33, 34, 36, 37, 43, 45, 46, 48, 49, 57], "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": []}, "JSONValidator.repair": {"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": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 11, 14, 64], "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": []}}, "classes": {"JSONValidator": {"executed_lines": [12, 15, 17, 18, 19, 20, 27, 33, 34, 36, 37, 43, 45, 46, 48, 49, 57, 66], "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": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 8, 9, 11, 14, 64], "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": []}}}, "src/parsec/validators/pydantic_validator.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 19, 20, 27, 33, 34, 35, 40, 41, 43, 44, 52, 59, 61], "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": [], "functions": {"PydanticValidator.__init__": {"executed_lines": [12], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "PydanticValidator.validate": {"executed_lines": [15, 17, 18, 19, 20, 27, 33, 34, 35, 40, 41, 43, 44, 52], "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": []}, "PydanticValidator.repair": {"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": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 11, 14, 59], "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": []}}, "classes": {"PydanticValidator": {"executed_lines": [12, 15, 17, 18, 19, 20, 27, 33, 34, 35, 40, 41, 43, 44, 52, 61], "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": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 11, 14, 59], "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": []}}}, "src/parsec/validators/repair_utils.py": {"executed_lines": [1, 2, 5, 6, 8, 9, 25, 28, 29, 30, 31, 34, 37, 40, 41, 43, 45, 46, 56, 58, 59, 70, 71, 72, 74, 75, 86, 87], "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": [], "functions": {"JSONRepairUtils.repair": {"executed_lines": [25, 28, 29, 30, 31, 34, 37, 40, 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": []}, "JSONRepairUtils._remove_trailing_commas": {"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": []}, "JSONRepairUtils._fix_quotes": {"executed_lines": [70, 71, 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": []}, "JSONRepairUtils._extract_json": {"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": []}, "": {"executed_lines": [1, 2, 5, 6, 8, 9, 45, 46, 58, 59, 74, 75], "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": []}}, "classes": {"JSONRepairUtils": {"executed_lines": [25, 28, 29, 30, 31, 34, 37, 40, 41, 43, 56, 70, 71, 72, 86, 87], "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": []}, "": {"executed_lines": [1, 2, 5, 6, 8, 9, 45, 46, 58, 59, 74, 75], "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": []}}}}, "totals": {"covered_lines": 968, "num_statements": 1533, "percent_covered": 63.14416177429876, "percent_covered_display": "63", "missing_lines": 565, "excluded_lines": 6, "percent_statements_covered": 63.14416177429876, "percent_statements_covered_display": "63"}}