-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcoverage.json
More file actions
1 lines (1 loc) · 424 KB
/
coverage.json
File metadata and controls
1 lines (1 loc) · 424 KB
1
{"meta": {"format": 3, "version": "7.13.5", "timestamp": "2026-04-07T02:24:08.009199", "branch_coverage": false, "show_contexts": false}, "files": {"keynetra/__init__.py": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/dependencies.py": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 80, 81, 97, 104, 109, 115], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"build_services": {"executed_lines": [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 80, 81, 97, 104, 109, 115], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ServiceContainer": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 80, 81, 97, 104, 109, 115], "summary": {"covered_lines": 69, "num_statements": 69, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/errors.py": {"executed_lines": [3, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 27, 28, 29, 30, 31], "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": [], "functions": {"ApiError.__init__": {"executed_lines": [27, 28, 29, 30, 31], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ApiErrorCode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "ApiError": {"executed_lines": [27, 28, 29, 30, 31], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 5, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/main.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 64, 66, 67, 69, 82, 85, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 140, 141, 142, 143, 154, 164, 165, 166, 167, 168, 170, 171, 173, 174, 176, 177, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 208], "summary": {"covered_lines": 96, "num_statements": 157, "percent_covered": 61.146496815286625, "percent_covered_display": "61", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 61.146496815286625, "percent_statements_covered_display": "61"}, "missing_lines": [36, 37, 38, 39, 40, 42, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 132, 133, 138, 144, 145, 146, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 160, 161, 169, 175, 181, 182, 183, 184, 188, 205], "excluded_lines": [], "functions": {"_lifespan": {"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": [36, 37, 38, 39, 40, 42], "excluded_lines": [], "start_line": 35}, "create_app": {"executed_lines": [46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 64, 66, 67, 69, 82], "summary": {"covered_lines": 15, "num_statements": 25, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [70, 71, 73, 74, 75, 76, 77, 78, 79, 80], "excluded_lines": [], "start_line": 45}, "_run_startup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105], "excluded_lines": [], "start_line": 85}, "_start_policy_subscriber": {"executed_lines": [109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 123, 140, 141, 142, 143], "summary": {"covered_lines": 16, "num_statements": 24, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [144, 145, 146, 147, 148, 149, 150, 151], "excluded_lines": [], "start_line": 108}, "_start_policy_subscriber.run": {"executed_lines": [124, 125, 126, 127, 128, 129, 130, 131], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [132, 133, 138], "excluded_lines": [], "start_line": 123}, "_stop_policy_subscriber": {"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": [155, 156, 157, 158, 159, 160, 161], "excluded_lines": [], "start_line": 154}, "_bootstrap_file_backed_model": {"executed_lines": [165, 166, 167, 168, 170, 171, 173, 174, 176, 177], "summary": {"covered_lines": 10, "num_statements": 17, "percent_covered": 58.8235294117647, "percent_covered_display": "59", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 58.8235294117647, "percent_statements_covered_display": "59"}, "missing_lines": [169, 175, 181, 182, 183, 184, 188], "excluded_lines": [], "start_line": 164}, "_bootstrap_file_backed_policies": {"executed_lines": [192, 193, 194, 195, 196, 197, 198, 199, 200, 201], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [205], "excluded_lines": [], "start_line": 191}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 45, 85, 108, 154, 164, 191, 208], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 34, 35, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 64, 66, 67, 69, 82, 85, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 140, 141, 142, 143, 154, 164, 165, 166, 167, 168, 170, 171, 173, 174, 176, 177, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 208], "summary": {"covered_lines": 96, "num_statements": 157, "percent_covered": 61.146496815286625, "percent_covered_display": "61", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 61.146496815286625, "percent_statements_covered_display": "61"}, "missing_lines": [36, 37, 38, 39, 40, 42, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 132, 133, 138, 144, 145, 146, 147, 148, 149, 150, 151, 155, 156, 157, 158, 159, 160, 161, 169, 175, 181, 182, 183, 184, 188, 205], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/errors.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 23, 24, 26, 27, 28, 29, 37, 41, 43, 44, 45, 53, 61, 62, 64, 65, 79, 80], "summary": {"covered_lines": 33, "num_statements": 43, "percent_covered": 76.74418604651163, "percent_covered_display": "77", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 76.74418604651163, "percent_statements_covered_display": "77"}, "missing_lines": [68, 69, 77, 81, 82, 83, 91, 99, 100, 101], "excluded_lines": [], "functions": {"_request_id": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "register_error_handlers": {"executed_lines": [24, 26, 27, 43, 44, 64, 65, 79, 80], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "register_error_handlers.api_exception_handler": {"executed_lines": [28, 29, 37, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "register_error_handlers.http_exception_handler": {"executed_lines": [45, 53, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "register_error_handlers.validation_exception_handler": {"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": [68, 69, 77], "excluded_lines": [], "start_line": 65}, "register_error_handlers.unhandled_exception_handler": {"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": [81, 82, 83, 91, 99, 100, 101], "excluded_lines": [], "start_line": 80}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 23], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 20, 23, 24, 26, 27, 28, 29, 37, 41, 43, 44, 45, 53, 61, 62, 64, 65, 79, 80], "summary": {"covered_lines": 33, "num_statements": 43, "percent_covered": 76.74418604651163, "percent_covered_display": "77", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 76.74418604651163, "percent_statements_covered_display": "77"}, "missing_lines": [68, 69, 77, 81, 82, 83, 91, 99, 100, 101], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/idempotency.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 27, 28, 29, 30, 32, 35, 36, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 52, 53, 64, 76, 77, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 94, 101, 102, 103, 106, 109, 110, 112, 113, 114, 115, 118, 119, 120], "summary": {"covered_lines": 58, "num_statements": 60, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [65, 111], "excluded_lines": [], "functions": {"IdempotencyMiddleware.__init__": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "IdempotencyMiddleware.dispatch": {"executed_lines": [35, 36, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 52, 53, 64, 76, 77, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 94, 101, 102, 103, 106], "summary": {"covered_lines": 32, "num_statements": 33, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97"}, "missing_lines": [65], "excluded_lines": [], "start_line": 32}, "_collect_body": {"executed_lines": [110, 112, 113, 114, 115], "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": [111], "excluded_lines": [], "start_line": 109}, "_clone_response": {"executed_lines": [119, 120], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 118}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 27, 32, 109, 118], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IdempotencyMiddleware": {"executed_lines": [28, 29, 30, 35, 36, 38, 39, 40, 42, 43, 44, 46, 47, 48, 49, 52, 53, 64, 76, 77, 82, 83, 84, 86, 88, 89, 90, 91, 92, 93, 94, 101, 102, 103, 106], "summary": {"covered_lines": 35, "num_statements": 36, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.22222222222223, "percent_statements_covered_display": "97"}, "missing_lines": [65], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 27, 32, 109, 110, 112, 113, 114, 115, 118, 119, 120], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.83333333333333, "percent_statements_covered_display": "96"}, "missing_lines": [111], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/logging.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 16, 19, 20, 21, 23, 26, 27, 28, 29, 30, 40, 47], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"RequestLoggingMiddleware.__init__": {"executed_lines": [20, 21], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "RequestLoggingMiddleware.dispatch": {"executed_lines": [26, 27, 28, 29, 30, 40, 47], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 16, 19, 23], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestLoggingMiddleware": {"executed_lines": [20, 21, 26, 27, 28, 29, 30, 40, 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": [], "start_line": 16}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 16, 19, 23], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/request_id.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 21, 23, 26, 27, 28, 29, 30, 31, 32, 34], "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": {"RequestIdMiddleware.dispatch": {"executed_lines": [26, 27, 28, 29, 30, 31, 32, 34], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 21, 23], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RequestIdMiddleware": {"executed_lines": [26, 27, 28, 29, 30, 31, 32, 34], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 21, 23], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/tenant.py": {"executed_lines": [3, 5, 7, 8, 9, 11, 14, 17, 19, 22, 25, 26, 27, 28, 30, 31, 44, 45], "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": [32], "excluded_lines": [], "functions": {"TenantResolverMiddleware.dispatch": {"executed_lines": [22, 25, 26, 27, 28, 30, 31, 44, 45], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [32], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [3, 5, 7, 8, 9, 11, 14, 17, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"TenantResolverMiddleware": {"executed_lines": [22, 25, 26, 27, 28, 30, 31, 44, 45], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [32], "excluded_lines": [], "start_line": 14}, "": {"executed_lines": [3, 5, 7, 8, 9, 11, 14, 17, 19], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/middleware/versioning.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 16, 19, 20, 21, 23, 26, 30, 31, 46, 47, 48, 49, 50, 51, 60, 61, 62], "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": {"ApiVersionMiddleware.dispatch": {"executed_lines": [26, 30, 31, 46, 47, 48, 49, 50, 51, 60, 61, 62], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 16, 19, 20, 21, 23], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ApiVersionMiddleware": {"executed_lines": [26, 30, 31, 46, 47, 48, 49, 50, 51, 60, 61, 62], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 16, 19, 20, 21, 23], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/pagination.py": {"executed_lines": [3, 5, 7, 8, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 30], "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": [], "functions": {"encode_cursor": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "decode_cursor": {"executed_lines": [19, 20, 21, 22, 23, 24, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 5, 7, 8, 9, 12, 16], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 7, 8, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 30], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/responses.py": {"executed_lines": [3, 5, 7, 10, 18, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"success_response": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "request_id_from_state": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 5, 7, 10, 27], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 7, 10, 18, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/access.py": {"executed_lines": [7, 9, 11, 12, 14, 15, 16, 17, 18, 24, 32, 33, 34, 36, 37, 40, 41, 44, 50, 51, 54, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 75, 78, 79, 80, 90, 95, 103, 104, 105, 106, 112, 113, 126, 148, 156, 170, 175, 182, 183, 184, 185, 197, 216, 223, 237, 242, 250, 251, 252, 253, 259, 260, 271, 291, 297], "summary": {"covered_lines": 66, "num_statements": 84, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [82, 107, 114, 137, 138, 143, 144, 186, 205, 206, 211, 212, 254, 261, 280, 281, 286, 287], "excluded_lines": [], "functions": {"_legacy_service_override": {"executed_lines": [41], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "_resolve_tenant_key": {"executed_lines": [50, 51, 54, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 75, 78, 79, 80], "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": [82], "excluded_lines": [], "start_line": 44}, "check_access": {"executed_lines": [103, 104, 105, 106, 112, 113, 126, 148, 156], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [107, 114, 137, 138, 143, 144], "excluded_lines": [], "start_line": 95}, "simulate": {"executed_lines": [182, 183, 184, 185, 197, 216, 223], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 58.333333333333336, "percent_covered_display": "58", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 58.333333333333336, "percent_statements_covered_display": "58"}, "missing_lines": [186, 205, 206, 211, 212], "excluded_lines": [], "start_line": 175}, "check_access_batch": {"executed_lines": [250, 251, 252, 253, 259, 260, 271, 291, 297], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [254, 261, 280, 281, 286, 287], "excluded_lines": [], "start_line": 242}, "": {"executed_lines": [7, 9, 11, 12, 14, 15, 16, 17, 18, 24, 32, 33, 34, 36, 37, 40, 44, 90, 95, 170, 175, 237, 242], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [7, 9, 11, 12, 14, 15, 16, 17, 18, 24, 32, 33, 34, 36, 37, 40, 41, 44, 50, 51, 54, 55, 56, 58, 59, 60, 61, 63, 64, 67, 68, 75, 78, 79, 80, 90, 95, 103, 104, 105, 106, 112, 113, 126, 148, 156, 170, 175, 182, 183, 184, 185, 197, 216, 223, 237, 242, 250, 251, 252, 253, 259, 260, 271, 291, 297], "summary": {"covered_lines": 66, "num_statements": 84, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [82, 107, 114, 137, 138, 143, 144, 186, 205, 206, 211, 212, 254, 261, 280, 281, 286, 287], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/acl.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 25, 26, 32, 33, 42, 43, 48, 49, 54, 65, 66, 73, 74, 75, 82, 101, 102, 108, 109, 110, 111, 112, 113, 118, 119, 124], "summary": {"covered_lines": 40, "num_statements": 47, "percent_covered": 85.1063829787234, "percent_covered_display": "85", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 85.1063829787234, "percent_statements_covered_display": "85"}, "missing_lines": [27, 50, 51, 78, 79, 120, 121], "excluded_lines": [], "functions": {"create_acl_entry": {"executed_lines": [25, 26, 32, 33, 42, 43, 48, 49, 54], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [27, 50, 51], "excluded_lines": [], "start_line": 19}, "list_acl_entries": {"executed_lines": [73, 74, 75, 82], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [78, 79], "excluded_lines": [], "start_line": 66}, "delete_acl_entry": {"executed_lines": [108, 109, 110, 111, 112, 113, 118, 119, 124], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [120, 121], "excluded_lines": [], "start_line": 102}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 65, 66, 101, 102], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 25, 26, 32, 33, 42, 43, 48, 49, 54, 65, 66, 73, 74, 75, 82, 101, 102, 108, 109, 110, 111, 112, 113, 118, 119, 124], "summary": {"covered_lines": 40, "num_statements": 47, "percent_covered": 85.1063829787234, "percent_covered_display": "85", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 85.1063829787234, "percent_statements_covered_display": "85"}, "missing_lines": [27, 50, 51, 78, 79, 120, 121], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/admin_auth.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 26, 27, 28, 30, 37, 38, 39, 42, 43, 44, 45, 51, 52, 63], "summary": {"covered_lines": 29, "num_statements": 32, "percent_covered": 90.625, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.625, "percent_statements_covered_display": "91"}, "missing_lines": [31, 40, 41], "excluded_lines": [], "functions": {"admin_login": {"executed_lines": [26, 27, 28, 30, 37, 38, 39, 42, 43, 44, 45, 51, 52, 63], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82"}, "missing_lines": [31, 40, 41], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 17, 20, 21, 26, 27, 28, 30, 37, 38, 39, 42, 43, 44, 45, 51, 52, 63], "summary": {"covered_lines": 29, "num_statements": 32, "percent_covered": 90.625, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.625, "percent_statements_covered_display": "91"}, "missing_lines": [31, 40, 41], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/audit.py": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 32, 38, 39, 40, 54], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.36363636363636, "percent_statements_covered_display": "86"}, "missing_lines": [33, 50, 51], "excluded_lines": [], "functions": {"list_audit_logs": {"executed_lines": [32, 38, 39, 40, 54], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [33, 50, 51], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 32, 38, 39, 40, 54], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 86.36363636363636, "percent_statements_covered_display": "86"}, "missing_lines": [33, 50, 51], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/auth_model.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25, 31, 32, 33, 34, 35, 36, 47, 50, 59, 71, 72, 77, 78, 79, 81], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 86.11111111111111, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86"}, "missing_lines": [51, 52, 55, 56, 80], "excluded_lines": [], "functions": {"create_auth_model": {"executed_lines": [31, 32, 33, 34, 35, 36, 47, 50, 59], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [51, 52, 55, 56], "excluded_lines": [], "start_line": 25}, "get_auth_model": {"executed_lines": [77, 78, 79, 81], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [80], "excluded_lines": [], "start_line": 72}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25, 71, 72], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 24, 25, 31, 32, 33, 34, 35, 36, 47, 50, 59, 71, 72, 77, 78, 79, 81], "summary": {"covered_lines": 31, "num_statements": 36, "percent_covered": 86.11111111111111, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 86.11111111111111, "percent_statements_covered_display": "86"}, "missing_lines": [51, 52, 55, 56, 80], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/dev.py": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 26, 27, 32, 33, 39, 40, 41], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"_require_local_dev": {"executed_lines": [17, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "get_sample_data": {"executed_lines": [26, 27], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "seed_sample_data": {"executed_lines": [39, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 16, 21, 22, 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": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 26, 27, 32, 33, 39, 40, 41], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/health.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 23, 26, 27, 32, 33, 34, 38, 48, 54, 55, 56, 57, 62, 63, 64], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [58, 59, 66, 67, 68, 70, 71, 72, 73, 74], "excluded_lines": [], "functions": {"health": {"executed_lines": [18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "liveness": {"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": [], "start_line": 22}, "readiness": {"executed_lines": [32, 33, 34, 38, 48], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "_check_database": {"executed_lines": [55, 56, 57], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [58, 59], "excluded_lines": [], "start_line": 54}, "_check_redis": {"executed_lines": [63, 64], "summary": {"covered_lines": 2, "num_statements": 10, "percent_covered": 20.0, "percent_covered_display": "20", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 20.0, "percent_statements_covered_display": "20"}, "missing_lines": [66, 67, 68, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 62}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 21, 22, 26, 27, 54, 62], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 16, 17, 18, 21, 22, 23, 26, 27, 32, 33, 34, 38, 48, 54, 55, 56, 57, 62, 63, 64], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [58, 59, 66, 67, 68, 70, 71, 72, 73, 74], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/metrics.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 12], "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": [], "functions": {"metrics": {"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": [], "start_line": 11}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 12], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/permissions.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 23, 26, 27, 34, 35, 36, 41, 42, 43, 52, 57, 58, 59, 62, 70, 71, 76, 77, 80, 81, 84, 85, 86, 87, 88, 89, 90, 94, 97, 98, 104, 105, 106, 107, 108, 117, 121, 122, 123, 124, 125, 126, 130, 133, 134, 140, 141, 146, 147, 148, 149, 152, 153, 154, 155, 159, 164, 165, 171, 172, 173, 175, 180], "summary": {"covered_lines": 77, "num_statements": 89, "percent_covered": 86.51685393258427, "percent_covered_display": "87", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 86.51685393258427, "percent_statements_covered_display": "87"}, "missing_lines": [44, 91, 92, 93, 118, 127, 128, 129, 156, 157, 158, 174], "excluded_lines": [], "functions": {"list_permissions": {"executed_lines": [34, 35, 36, 41, 42, 43, 52, 57, 58, 59, 62], "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": [44], "excluded_lines": [], "start_line": 27}, "create_permission": {"executed_lines": [76, 77, 80, 81, 84, 85, 86, 87, 88, 89, 90, 94], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [91, 92, 93], "excluded_lines": [], "start_line": 71}, "update_permission": {"executed_lines": [104, 105, 106, 107, 108, 117, 121, 122, 123, 124, 125, 126, 130], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [118, 127, 128, 129], "excluded_lines": [], "start_line": 98}, "delete_permission": {"executed_lines": [140, 141, 146, 147, 148, 149, 152, 153, 154, 155, 159], "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": [156, 157, 158], "excluded_lines": [], "start_line": 134}, "list_permission_roles": {"executed_lines": [171, 172, 173, 175, 180], "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": [174], "excluded_lines": [], "start_line": 165}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 23, 26, 27, 70, 71, 97, 98, 133, 134, 164, 165], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 23, 26, 27, 34, 35, 36, 41, 42, 43, 52, 57, 58, 59, 62, 70, 71, 76, 77, 80, 81, 84, 85, 86, 87, 88, 89, 90, 94, 97, 98, 104, 105, 106, 107, 108, 117, 121, 122, 123, 124, 125, 126, 130, 133, 134, 140, 141, 146, 147, 148, 149, 152, 153, 154, 155, 159, 164, 165, 171, 172, 173, 175, 180], "summary": {"covered_lines": 77, "num_statements": 89, "percent_covered": 86.51685393258427, "percent_covered_display": "87", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 86.51685393258427, "percent_statements_covered_display": "87"}, "missing_lines": [44, 91, 92, 93, 118, 127, 128, 129, 156, 157, 158, 174], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/playground.py": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 25, 26, 27, 28, 29, 32, 33, 34, 37, 40, 41, 46, 47, 53, 54], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"evaluate": {"executed_lines": [46, 47, 53, 54], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 25, 26, 27, 28, 29, 32, 33, 34, 37, 40, 41], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PlaygroundPolicy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "PlaygroundInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "PlaygroundEvaluateRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 25, 26, 27, 28, 29, 32, 33, 34, 37, 40, 41, 46, 47, 53, 54], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/policies.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 29, 30, 35, 36, 37, 40, 41, 46, 55, 56, 63, 64, 70, 76, 77, 91, 94, 108, 109, 117, 123, 129, 130, 144, 147, 161, 162, 169, 170, 171, 172, 190, 191, 197, 198, 203, 208, 211, 218, 219, 224, 225], "summary": {"covered_lines": 57, "num_statements": 73, "percent_covered": 78.08219178082192, "percent_covered_display": "78", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 78.08219178082192, "percent_statements_covered_display": "78"}, "missing_lines": [42, 43, 65, 71, 87, 88, 118, 124, 140, 141, 175, 199, 200, 226, 227, 230], "excluded_lines": [], "functions": {"list_policies": {"executed_lines": [29, 30, 35, 36, 37, 40, 41, 46], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [42, 43], "excluded_lines": [], "start_line": 22}, "create_policy": {"executed_lines": [63, 64, 70, 76, 77, 91, 94], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [65, 71, 87, 88], "excluded_lines": [], "start_line": 56}, "update_policy": {"executed_lines": [117, 123, 129, 130, 144, 147], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [118, 124, 140, 141], "excluded_lines": [], "start_line": 109}, "create_policy_from_dsl": {"executed_lines": [169, 170, 171, 172], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [175], "excluded_lines": [], "start_line": 162}, "delete_policy": {"executed_lines": [197, 198, 203], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [199, 200], "excluded_lines": [], "start_line": 191}, "rollback_policy": {"executed_lines": [218, 219, 224, 225], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [226, 227, 230], "excluded_lines": [], "start_line": 211}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 55, 56, 108, 109, 161, 162, 190, 191, 208, 211], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 29, 30, 35, 36, 37, 40, 41, 46, 55, 56, 63, 64, 70, 76, 77, 91, 94, 108, 109, 117, 123, 129, 130, 144, 147, 161, 162, 169, 170, 171, 172, 190, 191, 197, 198, 203, 208, 211, 218, 219, 224, 225], "summary": {"covered_lines": 57, "num_statements": 73, "percent_covered": 78.08219178082192, "percent_covered_display": "78", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 78.08219178082192, "percent_statements_covered_display": "78"}, "missing_lines": [42, 43, 65, 71, 87, 88, 118, 124, 140, 141, 175, 199, 200, 226, 227, 230], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/relationships.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, 28, 29, 32, 33, 42, 43, 48, 49, 60, 68, 71, 77, 78, 81, 82, 89], "summary": {"covered_lines": 34, "num_statements": 38, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89"}, "missing_lines": [56, 57, 85, 86], "excluded_lines": [], "functions": {"list_relationships": {"executed_lines": [42, 43, 48, 49, 60], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [56, 57], "excluded_lines": [], "start_line": 33}, "create_relationship": {"executed_lines": [77, 78, 81, 82, 89], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [85, 86], "excluded_lines": [], "start_line": 71}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, 28, 29, 32, 33, 68, 71], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "RelationshipOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 20, 21, 22, 23, 24, 25, 28, 29, 32, 33, 42, 43, 48, 49, 60, 68, 71, 77, 78, 81, 82, 89], "summary": {"covered_lines": 34, "num_statements": 38, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89"}, "missing_lines": [56, 57, 85, 86], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/roles.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 30, 31, 37, 38, 39, 40, 46, 49, 50, 51, 54, 62, 63, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82, 85, 86, 92, 93, 94, 95, 96, 101, 103, 104, 105, 106, 107, 108, 112, 115, 116, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 150, 151, 157, 158, 163, 165, 174, 179, 186, 187, 188, 189, 191, 193, 194, 195, 196, 197, 198, 204, 210, 213, 220, 221, 222, 223, 225, 227, 228, 229, 230, 231, 232, 238], "summary": {"covered_lines": 106, "num_statements": 128, "percent_covered": 82.8125, "percent_covered_display": "83", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 82.8125, "percent_statements_covered_display": "83"}, "missing_lines": [32, 79, 80, 81, 102, 109, 110, 111, 142, 143, 144, 164, 190, 192, 199, 200, 201, 224, 226, 233, 234, 235], "excluded_lines": [], "functions": {"list_roles": {"executed_lines": [30, 31, 37, 38, 39, 40, 46, 49, 50, 51, 54], "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": [32], "excluded_lines": [], "start_line": 23}, "create_role": {"executed_lines": [68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [79, 80, 81], "excluded_lines": [], "start_line": 63}, "update_role": {"executed_lines": [92, 93, 94, 95, 96, 101, 103, 104, 105, 106, 107, 108, 112], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [102, 109, 110, 111], "excluded_lines": [], "start_line": 86}, "delete_role": {"executed_lines": [122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [142, 143, 144], "excluded_lines": [], "start_line": 116}, "list_role_permissions": {"executed_lines": [157, 158, 163, 165], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [164], "excluded_lines": [], "start_line": 151}, "add_permission_to_role": {"executed_lines": [186, 187, 188, 189, 191, 193, 194, 195, 196, 197, 198, 204], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 70.58823529411765, "percent_covered_display": "71", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71"}, "missing_lines": [190, 192, 199, 200, 201], "excluded_lines": [], "start_line": 179}, "remove_permission_from_role": {"executed_lines": [220, 221, 222, 223, 225, 227, 228, 229, 230, 231, 232, 238], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 70.58823529411765, "percent_covered_display": "71", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 70.58823529411765, "percent_statements_covered_display": "71"}, "missing_lines": [224, 226, 233, 234, 235], "excluded_lines": [], "start_line": 213}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 62, 63, 85, 86, 115, 116, 150, 151, 174, 179, 210, 213], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 23, 30, 31, 37, 38, 39, 40, 46, 49, 50, 51, 54, 62, 63, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 82, 85, 86, 92, 93, 94, 95, 96, 101, 103, 104, 105, 106, 107, 108, 112, 115, 116, 122, 123, 133, 134, 135, 136, 137, 138, 139, 140, 141, 145, 150, 151, 157, 158, 163, 165, 174, 179, 186, 187, 188, 189, 191, 193, 194, 195, 196, 197, 198, 204, 210, 213, 220, 221, 222, 223, 225, 227, 228, 229, 230, 231, 232, 238], "summary": {"covered_lines": 106, "num_statements": 128, "percent_covered": 82.8125, "percent_covered_display": "83", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 82.8125, "percent_statements_covered_display": "83"}, "missing_lines": [32, 79, 80, 81, 102, 109, 110, 111, 142, 143, 144, 164, 190, 192, 199, 200, 201, 224, 226, 233, 234, 235], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/routes/simulation.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 18, 21, 22, 28, 29, 30, 34, 35, 51, 70, 71, 77, 78, 89, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 108, 110, 112, 113, 114, 115, 116], "summary": {"covered_lines": 40, "num_statements": 51, "percent_covered": 78.43137254901961, "percent_covered_display": "78", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78"}, "missing_lines": [31, 43, 44, 47, 48, 81, 82, 85, 86, 109, 111], "excluded_lines": [], "functions": {"simulate_policy": {"executed_lines": [28, 29, 30, 34, 35, 51], "summary": {"covered_lines": 6, "num_statements": 11, "percent_covered": 54.54545454545455, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "55"}, "missing_lines": [31, 43, 44, 47, 48], "excluded_lines": [], "start_line": 22}, "impact_analysis": {"executed_lines": [77, 78, 89], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [81, 82, 85, 86], "excluded_lines": [], "start_line": 71}, "_normalize_request": {"executed_lines": [96, 97, 98, 99, 100, 101, 102, 103, 104, 108, 110, 112, 113, 114, 115, 116], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [109, 111], "excluded_lines": [], "start_line": 95}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 18, 21, 22, 70, 71, 95], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 18, 21, 22, 28, 29, 30, 34, 35, 51, 70, 71, 77, 78, 89, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 108, 110, 112, 113, 114, 115, 116], "summary": {"covered_lines": 40, "num_statements": 51, "percent_covered": 78.43137254901961, "percent_covered_display": "78", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 78.43137254901961, "percent_statements_covered_display": "78"}, "missing_lines": [31, 43, 44, 47, 48, 81, 82, 85, 86, 109, 111], "excluded_lines": [], "start_line": 1}}}, "keynetra/api/service_modes.py": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45], "summary": {"covered_lines": 37, "num_statements": 38, "percent_covered": 97.36842105263158, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.36842105263158, "percent_statements_covered_display": "97"}, "missing_lines": [43], "excluded_lines": [], "functions": {"router_for_mode": {"executed_lines": [22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [43], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45], "summary": {"covered_lines": 37, "num_statements": 38, "percent_covered": 97.36842105263158, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.36842105263158, "percent_statements_covered_display": "97"}, "missing_lines": [43], "excluded_lines": [], "start_line": 1}}}, "keynetra/cli.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 48, 54, 55, 56, 57, 58, 59, 60, 63, 64, 70, 72, 75, 76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 108, 111, 112, 121, 122, 123, 124, 131, 132, 141, 142, 143, 144, 151, 154, 156, 157, 164, 165, 166, 174, 175, 178, 181, 182, 183, 184, 185, 186, 187, 188, 193, 194, 197, 198, 199, 201, 202, 206, 220, 222, 229, 230, 231, 232, 233, 234, 235, 237, 244, 245, 246, 247, 248, 249, 251, 258, 259, 260, 261, 262, 264, 265, 266, 275, 284, 295, 304, 305, 308, 311, 312, 321, 322, 323, 329, 330, 333, 334, 337, 384, 385, 394, 396, 397, 399, 400, 401, 402, 403, 404, 405, 406, 407, 413, 414, 417, 418, 426, 428, 429, 430, 431, 432, 433, 435, 437, 453, 454, 465, 466, 468, 469, 470, 471, 472, 473, 479, 480, 483, 484, 491, 492, 493, 494, 497, 498, 502, 503, 504, 507, 508, 519, 520, 521, 530, 536, 537, 540, 541, 548, 549, 550, 556, 557, 560, 561, 570, 572, 573, 574, 575, 576, 577, 578, 588, 590, 605, 606, 613, 614, 615, 617, 618, 619, 624, 625, 628, 629, 640, 641, 642, 643, 644, 646, 647, 648, 668, 669, 693, 694, 734, 735, 741, 743, 744, 745, 746, 754, 756, 757, 758, 761, 762, 798, 806, 807, 808, 810, 811, 812, 813, 814, 815, 816, 818, 819, 822, 823, 825, 826, 827, 828, 829, 830, 833, 834, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 862, 865, 866, 875, 876, 877, 878, 879, 880, 881, 882, 883, 892, 895, 896, 897, 899, 902, 903, 908, 909, 910, 911, 912, 913, 916, 918, 921, 922, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 942, 943, 944, 946, 949, 950, 951, 952, 958, 959, 962, 963, 964, 980, 981, 984, 985, 988], "summary": {"covered_lines": 362, "num_statements": 431, "percent_covered": 83.9907192575406, "percent_covered_display": "84", "missing_lines": 69, "excluded_lines": 0, "percent_statements_covered": 83.9907192575406, "percent_statements_covered_display": "84"}, "missing_lines": [71, 89, 107, 189, 190, 191, 203, 204, 294, 408, 409, 410, 411, 412, 650, 652, 653, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 689, 690, 702, 704, 705, 706, 707, 708, 709, 711, 712, 713, 714, 715, 717, 718, 719, 720, 730, 731, 747, 748, 749, 750, 751, 752, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 783, 794, 795, 824, 989], "excluded_lines": [], "functions": {"cli_root": {"executed_lines": [70, 72], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [71], "excluded_lines": [], "start_line": 64}, "_load_config": {"executed_lines": [76, 77, 78, 79, 80], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "_effective_config_path": {"executed_lines": [84, 85, 86, 87, 88, 90], "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": [89], "excluded_lines": [], "start_line": 83}, "_maybe_load_config": {"executed_lines": [94, 95, 96], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "_resolve_url": {"executed_lines": [100, 101, 102, 103, 104, 105, 106, 108], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [107], "excluded_lines": [], "start_line": 99}, "start": {"executed_lines": [121, 122, 123, 124], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 112}, "serve": {"executed_lines": [141, 142, 143, 144], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "_run_server": {"executed_lines": [154, 156, 157, 164, 165, 166, 174, 175], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 151}, "_render_startup_screen": {"executed_lines": [181, 182, 183, 184, 185, 186, 187, 188, 193, 194, 197, 198, 199, 201, 202, 206, 220, 222, 229, 230, 231, 232, 233, 234, 235, 237, 244, 245, 246, 247, 248, 249, 251, 258, 259, 260, 261, 262, 264, 265, 266, 275, 284, 295], "summary": {"covered_lines": 44, "num_statements": 50, "percent_covered": 88.0, "percent_covered_display": "88", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 88.0, "percent_statements_covered_display": "88"}, "missing_lines": [189, 190, 191, 203, 204, 294], "excluded_lines": [], "start_line": 178}, "version": {"executed_lines": [308], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 305}, "admin_login": {"executed_lines": [321, 322, 323, 329, 330], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 312}, "help_cli": {"executed_lines": [337], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 334}, "migrate": {"executed_lines": [394, 396, 397, 399, 400, 401, 402, 403, 404, 405, 406, 407, 413, 414], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [408, 409, 410, 411, 412], "excluded_lines": [], "start_line": 385}, "seed_data": {"executed_lines": [426, 428, 429, 430, 431, 432, 433, 435, 437], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 418}, "check": {"executed_lines": [465, 466, 468, 469, 470, 471, 472, 473, 479, 480], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 454}, "model_apply": {"executed_lines": [491, 492, 493, 494], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 484}, "model_show": {"executed_lines": [502, 503, 504], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 498}, "simulate": {"executed_lines": [519, 520, 521, 530, 536, 537], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 508}, "impact": {"executed_lines": [548, 549, 550, 556, 557], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 541}, "explain": {"executed_lines": [570, 572, 573, 574, 575, 576, 577, 578, 588, 590], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 561}, "test_policy": {"executed_lines": [613, 614, 615, 617, 618, 619, 624, 625], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 606}, "compile_policies": {"executed_lines": [640, 641, 642, 643, 644, 646, 647, 648], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [650, 652, 653], "excluded_lines": [], "start_line": 629}, "generate_openapi": {"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": [675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 689, 690], "excluded_lines": [], "start_line": 669}, "check_openapi": {"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": [702, 704, 705, 706, 707, 708, 709, 711, 712, 713, 714, 715, 717, 718, 719, 720, 730, 731], "excluded_lines": [], "start_line": 694}, "doctor": {"executed_lines": [741, 743, 744, 745, 746, 754, 756, 757, 758], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [747, 748, 749, 750, 751, 752], "excluded_lines": [], "start_line": 735}, "config_doctor": {"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": [767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 783, 794, 795], "excluded_lines": [], "start_line": 762}, "_run_benchmark": {"executed_lines": [806, 807, 808, 810, 818, 819], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 798}, "_run_benchmark.send_request": {"executed_lines": [811, 812, 813, 814, 815, 816], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 810}, "_percentile": {"executed_lines": [823, 825, 826, 827, 828, 829, 830], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [824], "excluded_lines": [], "start_line": 822}, "benchmark": {"executed_lines": [843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 862], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 834}, "acl_add": {"executed_lines": [875, 876, 877, 878, 879, 880, 881, 882, 883, 892, 895, 896, 897, 899], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 866}, "acl_list": {"executed_lines": [908, 909, 910, 911, 912, 913, 916, 918], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 903}, "acl_remove": {"executed_lines": [926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 942, 943, 944, 946], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 922}, "_read_applied_revisions": {"executed_lines": [950, 951, 952, 958, 959], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 949}, "_build_authorization_service": {"executed_lines": [963, 964], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 962}, "_coerce_scalar": {"executed_lines": [981], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 980}, "main": {"executed_lines": [985], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 984}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 48, 54, 55, 56, 57, 58, 59, 60, 63, 64, 75, 83, 93, 99, 111, 112, 131, 132, 151, 178, 304, 305, 311, 312, 333, 334, 384, 385, 417, 418, 453, 454, 483, 484, 497, 498, 507, 508, 540, 541, 560, 561, 605, 606, 628, 629, 668, 669, 693, 694, 734, 735, 761, 762, 798, 822, 833, 834, 865, 866, 902, 903, 921, 922, 949, 962, 980, 984, 988], "summary": {"covered_lines": 105, "num_statements": 106, "percent_covered": 99.05660377358491, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 99.05660377358491, "percent_statements_covered_display": "99"}, "missing_lines": [989], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 40, 41, 42, 43, 44, 45, 48, 54, 55, 56, 57, 58, 59, 60, 63, 64, 70, 72, 75, 76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88, 90, 93, 94, 95, 96, 99, 100, 101, 102, 103, 104, 105, 106, 108, 111, 112, 121, 122, 123, 124, 131, 132, 141, 142, 143, 144, 151, 154, 156, 157, 164, 165, 166, 174, 175, 178, 181, 182, 183, 184, 185, 186, 187, 188, 193, 194, 197, 198, 199, 201, 202, 206, 220, 222, 229, 230, 231, 232, 233, 234, 235, 237, 244, 245, 246, 247, 248, 249, 251, 258, 259, 260, 261, 262, 264, 265, 266, 275, 284, 295, 304, 305, 308, 311, 312, 321, 322, 323, 329, 330, 333, 334, 337, 384, 385, 394, 396, 397, 399, 400, 401, 402, 403, 404, 405, 406, 407, 413, 414, 417, 418, 426, 428, 429, 430, 431, 432, 433, 435, 437, 453, 454, 465, 466, 468, 469, 470, 471, 472, 473, 479, 480, 483, 484, 491, 492, 493, 494, 497, 498, 502, 503, 504, 507, 508, 519, 520, 521, 530, 536, 537, 540, 541, 548, 549, 550, 556, 557, 560, 561, 570, 572, 573, 574, 575, 576, 577, 578, 588, 590, 605, 606, 613, 614, 615, 617, 618, 619, 624, 625, 628, 629, 640, 641, 642, 643, 644, 646, 647, 648, 668, 669, 693, 694, 734, 735, 741, 743, 744, 745, 746, 754, 756, 757, 758, 761, 762, 798, 806, 807, 808, 810, 811, 812, 813, 814, 815, 816, 818, 819, 822, 823, 825, 826, 827, 828, 829, 830, 833, 834, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 862, 865, 866, 875, 876, 877, 878, 879, 880, 881, 882, 883, 892, 895, 896, 897, 899, 902, 903, 908, 909, 910, 911, 912, 913, 916, 918, 921, 922, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 942, 943, 944, 946, 949, 950, 951, 952, 958, 959, 962, 963, 964, 980, 981, 984, 985, 988], "summary": {"covered_lines": 362, "num_statements": 431, "percent_covered": 83.9907192575406, "percent_covered_display": "84", "missing_lines": 69, "excluded_lines": 0, "percent_statements_covered": 83.9907192575406, "percent_statements_covered_display": "84"}, "missing_lines": [71, 89, 107, 189, 190, 191, 203, 204, 294, 408, 409, 410, 411, 412, 650, 652, 653, 675, 677, 678, 679, 680, 681, 682, 684, 685, 686, 687, 689, 690, 702, 704, 705, 706, 707, 708, 709, 711, 712, 713, 714, 715, 717, 718, 719, 720, 730, 731, 747, 748, 749, 750, 751, 752, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 783, 794, 795, 824, 989], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/admin_auth.py": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 11, 13, 16, 17, 18, 19, 20, 23, 24, 25, 27, 32, 33, 34, 37, 38, 39, 45, 46, 56, 57, 58, 59, 61, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 99, 101, 102, 104, 105, 106, 108, 109, 110, 111, 112, 117, 120, 121, 124, 125, 127, 128, 129, 131, 132, 139, 140], "summary": {"covered_lines": 80, "num_statements": 86, "percent_covered": 93.02325581395348, "percent_covered_display": "93", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.02325581395348, "percent_statements_covered_display": "93"}, "missing_lines": [72, 78, 94, 100, 114, 142], "excluded_lines": [], "functions": {"require_management_role": {"executed_lines": [24, 25, 27, 61], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "require_management_role.dependency": {"executed_lines": [32, 33, 34, 37, 38, 39, 45, 46, 56, 57, 58, 59], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "_resolve_tenant_role": {"executed_lines": [65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 99, 101, 102, 104, 105, 106, 108, 109, 110, 111, 112], "summary": {"covered_lines": 36, "num_statements": 41, "percent_covered": 87.8048780487805, "percent_covered_display": "88", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 87.8048780487805, "percent_statements_covered_display": "88"}, "missing_lines": [72, 78, 94, 100, 114], "excluded_lines": [], "start_line": 64}, "_resolve_request_tenant_key": {"executed_lines": [120, 121, 124, 125, 127, 128, 129, 131, 132, 139, 140], "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": [142], "excluded_lines": [], "start_line": 117}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 11, 13, 16, 17, 18, 19, 20, 23, 64, 117], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AdminAccess": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 11, 13, 16, 17, 18, 19, 20, 23, 24, 25, 27, 32, 33, 34, 37, 38, 39, 45, 46, 56, 57, 58, 59, 61, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 76, 77, 80, 81, 82, 83, 84, 85, 86, 89, 90, 91, 92, 93, 95, 96, 99, 101, 102, 104, 105, 106, 108, 109, 110, 111, 112, 117, 120, 121, 124, 125, 127, 128, 129, 131, 132, 139, 140], "summary": {"covered_lines": 80, "num_statements": 86, "percent_covered": 93.02325581395348, "percent_covered_display": "93", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 93.02325581395348, "percent_statements_covered_display": "93"}, "missing_lines": [72, 78, 94, 100, 114, 142], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/config_loader.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 75, 86, 89, 90, 92, 93, 94, 95, 96, 97, 98, 100, 103, 104, 105, 106, 107, 110, 111, 112, 113, 114, 115, 119, 120, 121, 122, 123, 128, 129, 130], "summary": {"covered_lines": 88, "num_statements": 104, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 16, "excluded_lines": 2, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [34, 43, 91, 99, 116, 124, 125, 131, 132, 133, 134, 135, 136, 137, 138, 139], "excluded_lines": [12, 13], "functions": {"load_config_file": {"executed_lines": [28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [34, 43], "excluded_lines": [], "start_line": 27}, "apply_config_to_environment": {"executed_lines": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "_normalize_config": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "_paths_from_payload": {"executed_lines": [89, 90, 92, 93, 94, 95, 96, 97, 98, 100], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [91, 99], "excluded_lines": [], "start_line": 86}, "_nested": {"executed_lines": [104, 105, 106, 107], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "_as_str": {"executed_lines": [111, 112, 113, 114, 115], "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": [116], "excluded_lines": [], "start_line": 110}, "_as_int": {"executed_lines": [120, 121, 122, 123], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [124, 125], "excluded_lines": [], "start_line": 119}, "_as_bool": {"executed_lines": [129, 130], "summary": {"covered_lines": 2, "num_statements": 11, "percent_covered": 18.181818181818183, "percent_covered_display": "18", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 18.181818181818183, "percent_statements_covered_display": "18"}, "missing_lines": [131, 132, 133, 134, 135, 136, 137, 138, 139], "excluded_lines": [], "start_line": 128}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 49, 66, 86, 103, 110, 119, 128], "summary": {"covered_lines": 26, "num_statements": 26, "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": [12, 13], "start_line": 1}}, "classes": {"KeyNetraFileConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 41, 42, 44, 45, 46, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 75, 86, 89, 90, 92, 93, 94, 95, 96, 97, 98, 100, 103, 104, 105, 106, 107, 110, 111, 112, 113, 114, 115, 119, 120, 121, 122, 123, 128, 129, 130], "summary": {"covered_lines": 88, "num_statements": 104, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 16, "excluded_lines": 2, "percent_statements_covered": 84.61538461538461, "percent_statements_covered_display": "85"}, "missing_lines": [34, 43, 91, 99, 116, 124, 125, 131, 132, 133, 134, 135, 136, 137, 138, 139], "excluded_lines": [12, 13], "start_line": 1}}}, "keynetra/config/file_loaders.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 14, 15, 16, 17, 18, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, 75, 76, 80, 81, 82, 83, 86, 87, 89, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 133, 136, 137, 138, 139, 143, 144, 145, 146, 147, 148, 149, 150, 151, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 191, 194, 195, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 221, 222, 223, 224, 225, 228, 229, 230, 232, 233, 234, 235, 236, 239, 240, 242, 243, 244, 246], "summary": {"covered_lines": 160, "num_statements": 178, "percent_covered": 89.88764044943821, "percent_covered_display": "90", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 89.88764044943821, "percent_statements_covered_display": "90"}, "missing_lines": [42, 57, 58, 59, 60, 61, 62, 77, 88, 93, 109, 117, 141, 142, 165, 197, 226, 237], "excluded_lines": [10, 11], "functions": {"load_policies_from_paths": {"executed_lines": [15, 16, 17, 18, 19, 27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 14}, "load_policies_from_file": {"executed_lines": [36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [42], "excluded_lines": [], "start_line": 35}, "load_authorization_model_from_paths": {"executed_lines": [54, 55, 56, 63, 64, 65, 66, 67], "summary": {"covered_lines": 8, "num_statements": 14, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [57, 58, 59, 60, 61, 62], "excluded_lines": [], "start_line": 53}, "_load_model_file_if_supported": {"executed_lines": [71, 72, 73, 74, 75, 76], "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": [77], "excluded_lines": [], "start_line": 70}, "load_authorization_model_from_file": {"executed_lines": [81, 82, 83, 86, 87, 89, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [88, 93], "excluded_lines": [], "start_line": 80}, "_normalize_policy_payload": {"executed_lines": [108, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 133], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [109, 117], "excluded_lines": [], "start_line": 107}, "_policy_from_effect_block": {"executed_lines": [137, 138, 139, 143, 144, 145, 146, 147, 148, 149, 150, 151], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [141, 142], "excluded_lines": [], "start_line": 136}, "_parse_polar_policy_lines": {"executed_lines": [161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 191], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [165], "excluded_lines": [], "start_line": 160}, "_coerce_scalar": {"executed_lines": [195, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206], "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": [197], "excluded_lines": [], "start_line": 194}, "_model_mapping_to_schema": {"executed_lines": [210, 211, 212, 213, 214, 215, 216, 218, 219, 221, 222, 223, 224, 225, 228, 229, 230, 232, 233, 234, 235, 236, 239, 240, 242, 243, 244, 246], "summary": {"covered_lines": 28, "num_statements": 30, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [226, 237], "excluded_lines": [], "start_line": 209}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 14, 35, 53, 70, 80, 107, 136, 160, 194, 209], "summary": {"covered_lines": 17, "num_statements": 17, "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": [10, 11], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 14, 15, 16, 17, 18, 19, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 53, 54, 55, 56, 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, 75, 76, 80, 81, 82, 83, 86, 87, 89, 90, 91, 92, 95, 97, 98, 99, 100, 101, 102, 103, 104, 107, 108, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 133, 136, 137, 138, 139, 143, 144, 145, 146, 147, 148, 149, 150, 151, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 191, 194, 195, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 221, 222, 223, 224, 225, 228, 229, 230, 232, 233, 234, 235, 236, 239, 240, 242, 243, 244, 246], "summary": {"covered_lines": 160, "num_statements": 178, "percent_covered": 89.88764044943821, "percent_covered_display": "90", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 89.88764044943821, "percent_statements_covered_display": "90"}, "missing_lines": [42, 57, 58, 59, 60, 61, 62, 77, 88, 93, 109, 117, 141, 142, 165, 197, 226, 237], "excluded_lines": [10, 11], "start_line": 1}}}, "keynetra/config/policies.py": {"executed_lines": [3, 5, 7], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 5, 7], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 7], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/rate_limit.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 24, 25, 26, 27, 30, 31, 32, 33, 73, 74, 75, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 119, 120, 121, 122, 123, 124, 127, 128, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 170, 171, 172, 173, 174], "summary": {"covered_lines": 85, "num_statements": 85, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"RateLimitMiddleware.__init__": {"executed_lines": [75, 76, 77, 78], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "RateLimitMiddleware.dispatch": {"executed_lines": [81, 82, 84, 85, 86, 87, 88, 89, 90, 91], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 80}, "RateLimitMiddleware._consume": {"executed_lines": [94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 119, 120, 121, 122, 123, 124, 127, 128, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "RateLimitMiddleware._limited_response": {"executed_lines": [151], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 150}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 24, 25, 26, 27, 30, 31, 32, 33, 73, 74, 80, 93, 150, 170, 171, 172, 173, 174], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"_LocalBucket": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "RateLimitMiddleware": {"executed_lines": [75, 76, 77, 78, 81, 82, 84, 85, 86, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 106, 107, 108, 109, 119, 120, 121, 122, 123, 124, 127, 128, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 151], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "_BucketDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 171}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 24, 25, 26, 27, 30, 31, 32, 33, 73, 74, 80, 93, 150, 170, 171, 172, 173, 174], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/redis_client.py": {"executed_lines": [1, 3, 4, 6, 7, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 12, "num_statements": 12, "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": [8, 9], "functions": {"get_redis": {"executed_lines": [16, 17, 18, 19], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [1, 3, 4, 6, 7, 11, 14, 15], "summary": {"covered_lines": 8, "num_statements": 8, "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": [8, 9], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 11, 14, 15, 16, 17, 18, 19], "summary": {"covered_lines": 12, "num_statements": 12, "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": [8, 9], "start_line": 1}}}, "keynetra/config/sample_data.py": {"executed_lines": [1, 3, 4, 6, 8, 13, 17, 22, 32, 49, 60], "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": [61], "excluded_lines": [], "functions": {"sample_bootstrap_document": {"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": [61], "excluded_lines": [], "start_line": 60}, "": {"executed_lines": [1, 3, 4, 6, 8, 13, 17, 22, 32, 49, 60], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 8, 13, 17, 22, 32, 49, 60], "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": [61], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/security.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 27, 43, 44, 47, 48, 49, 62, 63, 64, 67, 68, 69, 70, 75, 115, 121, 122, 123, 124, 125, 126, 127, 128, 129, 134, 135, 140, 142, 147, 148, 150, 151, 152, 153, 161, 164, 165, 166, 167, 168, 170, 171], "summary": {"covered_lines": 62, "num_statements": 106, "percent_covered": 58.490566037735846, "percent_covered_display": "58", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 58.490566037735846, "percent_statements_covered_display": "58"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 111, 112, 141, 154], "excluded_lines": [], "functions": {"_decode_with_jwks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40], "excluded_lines": [], "start_line": 27}, "_unauthorized": {"executed_lines": [44], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "_log_failed_auth": {"executed_lines": [48, 49], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "_matches_api_key": {"executed_lines": [63, 64], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "_scopes_are_defined": {"executed_lines": [68, 69, 70], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 67}, "_get_jwks": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 111, 112], "excluded_lines": [], "start_line": 75}, "get_principal": {"executed_lines": [121, 122, 123, 124, 125, 126, 127, 128, 129, 134, 135, 140, 142, 147, 148, 150, 151, 152, 153, 161, 164, 165, 166, 167, 168, 170, 171], "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": [141, 154], "excluded_lines": [], "start_line": 115}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 27, 43, 47, 62, 67, 75, 115], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 27, 43, 44, 47, 48, 49, 62, 63, 64, 67, 68, 69, 70, 75, 115, 121, 122, 123, 124, 125, 126, 127, 128, 129, 134, 135, 140, 142, 147, 148, 150, 151, 152, 153, 161, 164, 165, 166, 167, 168, 170, 171], "summary": {"covered_lines": 62, "num_statements": 106, "percent_covered": 58.490566037735846, "percent_covered_display": "58", "missing_lines": 44, "excluded_lines": 0, "percent_statements_covered": 58.490566037735846, "percent_statements_covered_display": "58"}, "missing_lines": [28, 29, 30, 31, 32, 33, 34, 35, 38, 39, 40, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 110, 111, 112, 141, 154], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/settings.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 13, 14, 17, 18, 20, 21, 23, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 80, 82, 83, 84, 85, 87, 89, 90, 91, 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, 106, 108, 110, 111, 112, 113, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 128, 129, 131, 133, 134, 135, 140, 141, 145, 147, 151, 154, 155, 158, 160, 162, 163, 164, 165, 171, 173, 174, 178, 181, 183, 184, 185, 186, 188, 189, 191, 193, 194, 195, 196, 198, 199, 200, 201, 203, 204, 205, 206, 207, 210, 212, 213, 214, 216, 217, 218, 219, 226, 228, 229, 231, 232, 234, 236, 237, 238, 239, 242, 243, 244, 245, 249, 250, 251, 254, 255], "summary": {"covered_lines": 165, "num_statements": 194, "percent_covered": 85.05154639175258, "percent_covered_display": "85", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 85.05154639175258, "percent_statements_covered_display": "85"}, "missing_lines": [79, 86, 93, 100, 107, 116, 123, 130, 142, 146, 148, 152, 156, 159, 166, 168, 169, 170, 175, 176, 179, 190, 208, 209, 211, 215, 233, 240, 246], "excluded_lines": [], "functions": {"Settings._validate_environment": {"executed_lines": [77, 78, 80], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [79], "excluded_lines": [], "start_line": 76}, "Settings._validate_service_timeout": {"executed_lines": [85, 87], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [86], "excluded_lines": [], "start_line": 84}, "Settings._validate_retry_attempts": {"executed_lines": [92, 94], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [93], "excluded_lines": [], "start_line": 91}, "Settings._validate_rate_limit_per_minute": {"executed_lines": [99, 101], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [100], "excluded_lines": [], "start_line": 98}, "Settings._validate_rate_limit_window_seconds": {"executed_lines": [106, 108], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [107], "excluded_lines": [], "start_line": 105}, "Settings._validate_rate_limit_burst": {"executed_lines": [113, 114, 115, 117], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [116], "excluded_lines": [], "start_line": 112}, "Settings._validate_jwks_cache_ttl_seconds": {"executed_lines": [122, 124], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [123], "excluded_lines": [], "start_line": 121}, "Settings._validate_jwks_backoff_max_seconds": {"executed_lines": [129, 131], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [130], "excluded_lines": [], "start_line": 128}, "Settings._validate_security_profile": {"executed_lines": [135, 140, 141, 145, 147, 151, 154, 155, 158, 160], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 62.5, "percent_statements_covered_display": "62"}, "missing_lines": [142, 146, 148, 152, 156, 159], "excluded_lines": [], "start_line": 134}, "Settings.load_policies": {"executed_lines": [163, 164, 165, 171, 173, 174, 178, 181], "summary": {"covered_lines": 8, "num_statements": 15, "percent_covered": 53.333333333333336, "percent_covered_display": "53", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 53.333333333333336, "percent_statements_covered_display": "53"}, "missing_lines": [166, 168, 169, 170, 175, 176, 179], "excluded_lines": [], "start_line": 162}, "Settings.parsed_policy_paths": {"executed_lines": [184, 185, 186], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "Settings.parsed_model_paths": {"executed_lines": [189, 191], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [190], "excluded_lines": [], "start_line": 188}, "Settings.parsed_api_keys": {"executed_lines": [194, 195, 196], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 193}, "Settings.parsed_api_key_hashes": {"executed_lines": [199, 200, 201], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 198}, "Settings.parsed_api_key_scopes": {"executed_lines": [204, 205, 206, 207, 210, 212, 213, 214, 216, 217, 218, 219, 226], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [208, 209, 211, 215], "excluded_lines": [], "start_line": 203}, "Settings.is_development": {"executed_lines": [229], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "Settings.parsed_cors_allow_origins": {"executed_lines": [232, 234], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [233], "excluded_lines": [], "start_line": 231}, "Settings.parsed_cors_allow_methods": {"executed_lines": [237, 238, 239], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [240], "excluded_lines": [], "start_line": 236}, "Settings.parsed_cors_allow_headers": {"executed_lines": [243, 244, 245], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [246], "excluded_lines": [], "start_line": 242}, "get_settings": {"executed_lines": [251], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 250}, "reset_settings_cache": {"executed_lines": [255], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 254}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 13, 14, 17, 18, 20, 21, 23, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 74, 75, 76, 82, 83, 84, 89, 90, 91, 96, 97, 98, 103, 104, 105, 110, 111, 112, 119, 120, 121, 126, 127, 128, 133, 134, 162, 183, 188, 193, 198, 203, 228, 231, 236, 242, 249, 250, 254], "summary": {"covered_lines": 93, "num_statements": 93, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Settings": {"executed_lines": [77, 78, 80, 85, 87, 92, 94, 99, 101, 106, 108, 113, 114, 115, 117, 122, 124, 129, 131, 135, 140, 141, 145, 147, 151, 154, 155, 158, 160, 163, 164, 165, 171, 173, 174, 178, 181, 184, 185, 186, 189, 191, 194, 195, 196, 199, 200, 201, 204, 205, 206, 207, 210, 212, 213, 214, 216, 217, 218, 219, 226, 229, 232, 234, 237, 238, 239, 243, 244, 245], "summary": {"covered_lines": 70, "num_statements": 99, "percent_covered": 70.70707070707071, "percent_covered_display": "71", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 70.70707070707071, "percent_statements_covered_display": "71"}, "missing_lines": [79, 86, 93, 100, 107, 116, 123, 130, 142, 146, 148, 152, 156, 159, 166, 168, 169, 170, 175, 176, 179, 190, 208, 209, 211, 215, 233, 240, 246], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 13, 14, 17, 18, 20, 21, 23, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 65, 68, 69, 70, 71, 72, 74, 75, 76, 82, 83, 84, 89, 90, 91, 96, 97, 98, 103, 104, 105, 110, 111, 112, 119, 120, 121, 126, 127, 128, 133, 134, 162, 183, 188, 193, 198, 203, 228, 231, 236, 242, 249, 250, 251, 254, 255], "summary": {"covered_lines": 95, "num_statements": 95, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/config/tenancy.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53, 56, 57, 58], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "98"}, "missing_lines": [22], "excluded_lines": [], "functions": {"get_tenant_key": {"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": [], "start_line": 11}, "normalize_tenant_key": {"executed_lines": [16, 17, 18, 19, 20, 21, 23], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [22], "excluded_lines": [], "start_line": 15}, "tenant_from_principal": {"executed_lines": [27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "tenant_for_logs": {"executed_lines": [57, 58], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 15, 26, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53, 56, 57, 58], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "98"}, "missing_lines": [22], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/acl.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 27], "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": {"": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 27], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ResourceACL": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23, 27], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/audit.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31], "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": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuditLog": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 31], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/auth_model.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 18, 19, 20, 21, 24, 28], "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": [], "functions": {"": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 18, 19, 20, 21, 24, 28], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthorizationModel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 18, 19, 20, 21, 24, 28], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/base.py": {"executed_lines": [1, 3, 6, 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, 6, 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": [], "start_line": 1}}, "classes": {"Base": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 3, 6, 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": [], "start_line": 1}}}, "keynetra/domain/models/idempotency.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28], "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": {"": {"executed_lines": [1, 3, 5, 6, 8, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IdempotencyRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 28], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/policy_versioning.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 16, 17, 18, 20, 23, 24, 26, 27, 28, 31, 33, 34, 35, 36, 38, 41, 42, 44], "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": {"": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 16, 17, 18, 20, 23, 24, 26, 27, 28, 31, 33, 34, 35, 36, 38, 41, 42, 44], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "PolicyVersion": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 14, 15, 16, 17, 18, 20, 23, 24, 26, 27, 28, 31, 33, 34, 35, 36, 38, 41, 42, 44], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/rbac.py": {"executed_lines": [1, 3, 4, 6, 8, 15, 25, 26, 28, 29, 31, 33, 36, 37, 39, 40, 42, 43, 48, 49, 51, 52, 54, 58], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 8, 15, 25, 26, 28, 29, 31, 33, 36, 37, 39, 40, 42, 43, 48, 49, 51, 52, 54, 58], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "Role": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "Permission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "": {"executed_lines": [1, 3, 4, 6, 8, 15, 25, 26, 28, 29, 31, 33, 36, 37, 39, 40, 42, 43, 48, 49, 51, 52, 54, 58], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/relationship.py": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 15, 16, 17, 18, 19, 21], "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": {"": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 15, 16, 17, 18, 19, 21], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Relationship": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 15, 16, 17, 18, 19, 21], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/models/tenant.py": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 14, 15], "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, 3, 4, 6, 9, 10, 12, 13, 14, 15], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"Tenant": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 14, 15], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/pagination.py": {"executed_lines": [3, 5, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [17], "excluded_lines": [], "functions": {"encode_cursor": {"executed_lines": [11, 12], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 10}, "decode_cursor": {"executed_lines": [16, 18, 19, 20, 21, 22], "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": [17], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 6, 7, 10, 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": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 10, 11, 12, 15, 16, 18, 19, 20, 21, 22], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [17], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/schemas/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/schemas/access.py": {"executed_lines": [1, 3, 5, 8, 11, 12, 13, 14, 15, 16, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 51, 52, 55, 56, 57, 58, 61, 62, 63], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 11, 12, 13, 14, 15, 16, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 51, 52, 55, 56, 57, 58, 61, 62, 63], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "AccessResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "AccessDecisionResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "SimulationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "BatchAccessItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "BatchAccessRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "BatchAccessResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 55}, "BatchAccessResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "": {"executed_lines": [1, 3, 5, 8, 11, 12, 13, 14, 15, 16, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 48, 49, 50, 51, 52, 55, 56, 57, 58, 61, 62, 63], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/schemas/api.py": {"executed_lines": [3, 5, 7, 9, 12, 13, 14, 15, 18, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 33], "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": [], "functions": {"": {"executed_lines": [3, 5, 7, 9, 12, 13, 14, 15, 18, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 33], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ErrorBody": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "MetaBody": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "SuccessResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ErrorResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "": {"executed_lines": [3, 5, 7, 9, 12, 13, 14, 15, 18, 19, 20, 21, 22, 25, 26, 27, 28, 31, 32, 33], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/schemas/management.py": {"executed_lines": [1, 3, 4, 6, 9, 10, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 93, 94, 95, 96, 97, 98], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 9, 10, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 93, 94, 95, 96, 97, 98], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RoleCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "RoleUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "RoleOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "PermissionCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "PermissionUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "PermissionOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "RolePermissionOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 35}, "PolicyCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 40}, "PolicyOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "ACLCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "ACLOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "AuditRecordOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "AdminLoginRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "AdminLoginResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "": {"executed_lines": [1, 3, 4, 6, 9, 10, 13, 14, 17, 18, 19, 22, 23, 26, 27, 30, 31, 32, 35, 36, 37, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 93, 94, 95, 96, 97, 98], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/domain/schemas/modeling.py": {"executed_lines": [1, 3, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 28, 29, 30, 33, 34, 35, 38, 39, 42, 43, 44], "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": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 28, 29, 30, 33, 34, 35, 38, 39, 42, 43, 44], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthModelCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "AuthModelOut": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "PolicySimulationInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "PolicySimulationRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "PolicySimulationResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "ImpactAnalysisRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "ImpactAnalysisResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "": {"executed_lines": [1, 3, 5, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 28, 29, 30, 33, 34, 35, 38, 39, 42, 43, 44], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/__init__.py": {"executed_lines": [3, 11], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [3, 11], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 11], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/compiled/__init__.py": {"executed_lines": [1, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "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, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 6, 8], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/compiled/decision_graph.py": {"executed_lines": [3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 43, 44, 45, 46, 47, 50, 53, 54, 55, 57, 58, 59, 61, 62, 63, 65, 66, 67, 68, 69, 72], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"DecisionGraph.evaluate": {"executed_lines": [32, 33, 34, 35, 36, 37, 38, 43, 44, 45, 46, 47], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "CompiledPolicyStore.__init__": {"executed_lines": [54, 55], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "CompiledPolicyStore.get": {"executed_lines": [58, 59], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "CompiledPolicyStore.set": {"executed_lines": [62, 63], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "CompiledPolicyStore.invalidate": {"executed_lines": [66, 67, 68, 69], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 50, 53, 57, 61, 65, 72], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"GraphDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "CompiledPolicyNode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "DecisionGraph": {"executed_lines": [32, 33, 34, 35, 36, 37, 38, 43, 44, 45, 46, 47], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "CompiledPolicyStore": {"executed_lines": [54, 55, 58, 59, 62, 63, 66, 67, 68, 69], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "": {"executed_lines": [3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 31, 50, 53, 57, 61, 65, 72], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/compiled/policy_compiler.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 13, 14, 15, 16, 17, 18, 21, 25, 28, 30, 31, 32, 33, 35, 36, 37, 38, 40, 49, 52, 62, 66, 67], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [34], "excluded_lines": [], "functions": {"compile_policy_ast": {"executed_lines": [25, 28, 30, 40], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "compile_policy_ast.evaluate": {"executed_lines": [31, 32, 33, 35, 36, 37, 38], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [34], "excluded_lines": [], "start_line": 30}, "compile_policy_graph": {"executed_lines": [52, 62, 66, 67], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 13, 14, 15, 16, 17, 18, 21, 49], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PolicyAST": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 13, 14, 15, 16, 17, 18, 21, 25, 28, 30, 31, 32, 33, 35, 36, 37, 38, 40, 49, 52, 62, 66, 67], "summary": {"covered_lines": 29, "num_statements": 30, "percent_covered": 96.66666666666667, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.66666666666667, "percent_statements_covered_display": "97"}, "missing_lines": [34], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/keynetra_engine.py": {"executed_lines": [8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 56, 57, 58, 67, 68, 71, 72, 73, 74, 76, 77, 85, 86, 93, 94, 95, 96, 97, 98, 99, 101, 102, 105, 108, 111, 114, 126, 129, 130, 131, 132, 133, 134, 136, 139, 140, 141, 144, 146, 149, 151, 152, 153, 154, 156, 159, 161, 162, 163, 164, 166, 167, 180, 195, 198, 200, 201, 202, 203, 204, 205, 207, 210, 211, 214, 215, 216, 218, 223, 227, 230, 236, 240, 243, 244, 257, 259, 272, 275, 277, 291, 292, 293, 302, 309, 310, 319, 320, 321, 327, 328, 330, 331, 338, 339, 340, 342, 343, 345, 346, 347, 354, 356, 357, 358, 363, 364, 373, 374, 375, 380, 381, 390, 391, 392, 397, 398, 407, 408, 411, 416, 417, 426, 427, 428, 433, 434, 443, 444, 445, 450, 451, 460, 461, 466, 467, 477, 487, 488, 489, 490, 491, 492, 500, 505, 509, 519, 522, 525, 526, 534, 535, 540, 542, 549, 550, 551, 556, 557, 558, 559, 564, 565, 566, 569, 570, 571, 572, 573, 581, 582, 587, 588, 589, 591, 594, 595, 596, 604, 605, 608, 610, 617, 618, 619, 620, 625, 626, 627, 629, 634, 636, 637, 639, 640, 648, 653, 658, 660, 663, 664, 665, 666, 667, 672, 673, 681, 683, 686, 687, 688, 693, 694, 695, 696, 703, 704, 712, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729, 730, 735, 736, 737, 738, 740, 741, 742, 743, 744, 745, 747, 748, 755, 756, 758, 766, 771, 773, 774, 775, 777, 780, 782, 792, 794, 820, 828], "summary": {"covered_lines": 290, "num_statements": 354, "percent_covered": 81.92090395480226, "percent_covered_display": "82", "missing_lines": 64, "excluded_lines": 0, "percent_statements_covered": 81.92090395480226, "percent_statements_covered_display": "82"}, "missing_lines": [117, 118, 119, 120, 121, 122, 123, 124, 142, 143, 150, 160, 165, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 184, 185, 186, 187, 188, 189, 190, 193, 199, 208, 212, 217, 224, 311, 312, 315, 322, 323, 324, 325, 329, 341, 628, 633, 635, 638, 739, 770, 772, 781, 783, 786, 791, 801, 802, 810, 823, 824, 825, 826, 829], "excluded_lines": [], "functions": {"PolicyDefinition.from_dict": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "ExplainTraceStep.to_dict": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 76}, "AuthorizationDecision.evaluated_rules": {"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": [], "start_line": 102}, "ConditionEvaluator.evaluate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 118, 119, 120, 121, 122, 123, 124], "excluded_lines": [], "start_line": 114}, "ConditionEvaluator.handle_role": {"executed_lines": [129, 130, 131, 132, 133, 134], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "ConditionEvaluator.handle_max_amount": {"executed_lines": [139, 140, 141, 144], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [142, 143], "excluded_lines": [], "start_line": 136}, "ConditionEvaluator.handle_owner_only": {"executed_lines": [149, 151, 152, 153, 154], "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": [150], "excluded_lines": [], "start_line": 146}, "ConditionEvaluator.handle_time_range": {"executed_lines": [159, 161, 162, 163, 164, 166, 167], "summary": {"covered_lines": 7, "num_statements": 19, "percent_covered": 36.8421052631579, "percent_covered_display": "37", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 36.8421052631579, "percent_statements_covered_display": "37"}, "missing_lines": [160, 165, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178], "excluded_lines": [], "start_line": 156}, "ConditionEvaluator.handle_geo_match": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [184, 185, 186, 187, 188, 189, 190, 193], "excluded_lines": [], "start_line": 180}, "ConditionEvaluator.handle_has_relation": {"executed_lines": [198, 200, 201, 202, 203, 204, 205, 207, 210, 211, 214, 215, 216, 218, 223], "summary": {"covered_lines": 15, "num_statements": 20, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [199, 208, 212, 217, 224], "excluded_lines": [], "start_line": 195}, "KeyNetraEngine.__init__": {"executed_lines": [236, 240, 243, 244, 257], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 230}, "KeyNetraEngine.decide": {"executed_lines": [272, 275], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 259}, "KeyNetraEngine.check_access": {"executed_lines": [291, 292, 293], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 277}, "KeyNetraEngine._normalize_input": {"executed_lines": [309, 310], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [311, 312, 315], "excluded_lines": [], "start_line": 302}, "KeyNetraEngine._normalize_subject": {"executed_lines": [320, 321], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [322, 323, 324, 325], "excluded_lines": [], "start_line": 319}, "KeyNetraEngine._normalize_resource": {"executed_lines": [328, 330, 331], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [329], "excluded_lines": [], "start_line": 327}, "KeyNetraEngine._parse_descriptor": {"executed_lines": [339, 340, 342, 343], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [341], "excluded_lines": [], "start_line": 338}, "KeyNetraEngine._decide_structured": {"executed_lines": [346, 347, 354, 356, 357, 358, 363, 364, 373, 374, 375, 380, 381, 390, 391, 392, 397, 398, 407, 408, 411, 416, 417, 426, 427, 428, 433, 434, 443, 444, 445, 450, 451, 460, 461, 466, 467], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 345}, "KeyNetraEngine._decision_from_stage": {"executed_lines": [487, 488, 489, 490, 491, 492, 500, 505, 509], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 477}, "KeyNetraEngine._evaluate_direct_permissions": {"executed_lines": [522, 525, 526, 534, 535, 540], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 519}, "KeyNetraEngine._evaluate_acl": {"executed_lines": [549, 550, 551, 556, 557, 558, 559, 564, 565, 566, 569, 570, 571, 572, 573, 581, 582, 587, 588, 589], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 542}, "KeyNetraEngine._evaluate_role_permissions": {"executed_lines": [594, 595, 596, 604, 605, 608], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 591}, "KeyNetraEngine._evaluate_relationship_index": {"executed_lines": [617, 618, 619, 620, 625, 626, 627, 629, 634, 636, 637, 639, 640, 648, 653, 658], "summary": {"covered_lines": 16, "num_statements": 20, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [628, 633, 635, 638], "excluded_lines": [], "start_line": 610}, "KeyNetraEngine._evaluate_compiled_policies": {"executed_lines": [663, 664, 665, 666, 667, 672, 673, 681], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 660}, "KeyNetraEngine._evaluate_permission_graph": {"executed_lines": [686, 687, 688, 693, 694, 695, 696, 703, 704, 712], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 683}, "KeyNetraEngine._subject_descriptors": {"executed_lines": [715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729, 730, 735, 736, 737, 738, 740, 741, 742, 743, 744, 745], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [739], "excluded_lines": [], "start_line": 714}, "KeyNetraEngine._resource_identity": {"executed_lines": [748, 755, 756], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 747}, "KeyNetraEngine._acl_matches": {"executed_lines": [766, 771, 773, 774, 775], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [770, 772], "excluded_lines": [], "start_line": 758}, "KeyNetraEngine._acl_subject_matches": {"executed_lines": [780, 782, 792], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [781, 783, 786, 791], "excluded_lines": [], "start_line": 777}, "KeyNetraEngine._decision_from_policy": {"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": [801, 802, 810], "excluded_lines": [], "start_line": 794}, "KeyNetraEngine._best_reason": {"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": [823, 824, 825, 826], "excluded_lines": [], "start_line": 820}, "KeyNetraEngine._policy_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [829], "excluded_lines": [], "start_line": 828}, "": {"executed_lines": [8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 56, 57, 67, 68, 71, 72, 73, 74, 76, 85, 86, 93, 94, 95, 96, 97, 98, 99, 101, 102, 108, 111, 114, 126, 136, 146, 156, 180, 195, 227, 230, 259, 277, 302, 319, 327, 338, 345, 477, 519, 542, 591, 610, 660, 683, 714, 747, 758, 777, 794, 820, 828], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthorizationInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "PolicyDefinition": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "ExplainTraceStep": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "AuthorizationDecision": {"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": [], "start_line": 86}, "ConditionEvaluator": {"executed_lines": [129, 130, 131, 132, 133, 134, 139, 140, 141, 144, 149, 151, 152, 153, 154, 159, 161, 162, 163, 164, 166, 167, 198, 200, 201, 202, 203, 204, 205, 207, 210, 211, 214, 215, 216, 218, 223], "summary": {"covered_lines": 37, "num_statements": 73, "percent_covered": 50.68493150684932, "percent_covered_display": "51", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 50.68493150684932, "percent_statements_covered_display": "51"}, "missing_lines": [117, 118, 119, 120, 121, 122, 123, 124, 142, 143, 150, 160, 165, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 184, 185, 186, 187, 188, 189, 190, 193, 199, 208, 212, 217, 224], "excluded_lines": [], "start_line": 111}, "KeyNetraEngine": {"executed_lines": [236, 240, 243, 244, 257, 272, 275, 291, 292, 293, 309, 310, 320, 321, 328, 330, 331, 339, 340, 342, 343, 346, 347, 354, 356, 357, 358, 363, 364, 373, 374, 375, 380, 381, 390, 391, 392, 397, 398, 407, 408, 411, 416, 417, 426, 427, 428, 433, 434, 443, 444, 445, 450, 451, 460, 461, 466, 467, 487, 488, 489, 490, 491, 492, 500, 505, 509, 522, 525, 526, 534, 535, 540, 549, 550, 551, 556, 557, 558, 559, 564, 565, 566, 569, 570, 571, 572, 573, 581, 582, 587, 588, 589, 594, 595, 596, 604, 605, 608, 617, 618, 619, 620, 625, 626, 627, 629, 634, 636, 637, 639, 640, 648, 653, 658, 663, 664, 665, 666, 667, 672, 673, 681, 686, 687, 688, 693, 694, 695, 696, 703, 704, 712, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 728, 729, 730, 735, 736, 737, 738, 740, 741, 742, 743, 744, 745, 748, 755, 756, 766, 771, 773, 774, 775, 780, 782, 792], "summary": {"covered_lines": 168, "num_statements": 196, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [311, 312, 315, 322, 323, 324, 325, 329, 341, 628, 633, 635, 638, 739, 770, 772, 781, 783, 786, 791, 801, 802, 810, 823, 824, 825, 826, 829], "excluded_lines": [], "start_line": 227}, "": {"executed_lines": [8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 27, 28, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 50, 51, 52, 53, 54, 56, 57, 67, 68, 71, 72, 73, 74, 76, 85, 86, 93, 94, 95, 96, 97, 98, 99, 101, 102, 108, 111, 114, 126, 136, 146, 156, 180, 195, 227, 230, 259, 277, 302, 319, 327, 338, 345, 477, 519, 542, 591, 610, 660, 683, 714, 747, 758, 777, 794, 820, 828], "summary": {"covered_lines": 82, "num_statements": 82, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/model_graph/__init__.py": {"executed_lines": [1, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/engine/model_graph/permission_graph.py": {"executed_lines": [3, 5, 6, 7, 9, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 41, 47, 48, 49, 52, 53, 56, 57, 60, 61, 62, 64, 65, 67, 68, 69, 71, 73, 74, 77, 78, 79, 81, 82, 83, 84, 86, 88, 90, 92, 93, 96, 99, 100, 101, 103, 104, 105, 107, 108, 109, 111, 116], "summary": {"covered_lines": 68, "num_statements": 78, "percent_covered": 87.17948717948718, "percent_covered_display": "87", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 87.17948717948718, "percent_statements_covered_display": "87"}, "missing_lines": [70, 72, 75, 80, 85, 87, 89, 91, 112, 113], "excluded_lines": [], "functions": {"CompiledPermissionGraph.evaluate": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 41], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "CompiledPermissionGraph._resource_identity": {"executed_lines": [48, 49, 52, 53], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "_PermissionEvaluator.__init__": {"executed_lines": [60, 61, 62], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 57}, "_PermissionEvaluator.evaluate": {"executed_lines": [65, 67, 68, 69, 71, 73, 74], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [70, 72, 75], "excluded_lines": [], "start_line": 64}, "_PermissionEvaluator._has_relation": {"executed_lines": [78, 79, 81, 82, 83, 84, 86, 88, 90, 92, 93], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 68.75, "percent_statements_covered_display": "69"}, "missing_lines": [80, 85, 87, 89, 91], "excluded_lines": [], "start_line": 77}, "PermissionGraphStore.__init__": {"executed_lines": [100, 101], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 99}, "PermissionGraphStore.get": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 103}, "PermissionGraphStore.set": {"executed_lines": [108, 109], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 107}, "PermissionGraphStore.invalidate": {"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": [112, 113], "excluded_lines": [], "start_line": 111}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 47, 56, 57, 64, 77, 96, 99, 103, 107, 111, 116], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthorizationGraphDecision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 13}, "CompiledPermissionGraph": {"executed_lines": [25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 41, 48, 49, 52, 53], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "_PermissionEvaluator": {"executed_lines": [60, 61, 62, 65, 67, 68, 69, 71, 73, 74, 78, 79, 81, 82, 83, 84, 86, 88, 90, 92, 93], "summary": {"covered_lines": 21, "num_statements": 29, "percent_covered": 72.41379310344827, "percent_covered_display": "72", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 72.41379310344827, "percent_statements_covered_display": "72"}, "missing_lines": [70, 72, 75, 80, 85, 87, 89, 91], "excluded_lines": [], "start_line": 56}, "PermissionGraphStore": {"executed_lines": [100, 101, 104, 105, 108, 109], "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": [112, 113], "excluded_lines": [], "start_line": 96}, "": {"executed_lines": [3, 5, 6, 7, 9, 12, 13, 14, 15, 16, 19, 20, 21, 22, 24, 47, 56, 57, 64, 77, 96, 99, 103, 107, 111, 116], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/headless.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 14, 19, 20, 23, 24, 27, 28, 30, 31, 32, 33, 34, 36, 37, 38, 42, 44, 45, 46, 47, 50, 51, 52, 57, 65, 66, 67, 77, 78, 79, 80, 81, 82, 85, 86, 88, 89, 97, 98, 99, 100, 101, 102], "summary": {"covered_lines": 50, "num_statements": 53, "percent_covered": 94.33962264150944, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 94.33962264150944, "percent_statements_covered_display": "94"}, "missing_lines": [48, 83, 87], "excluded_lines": [], "functions": {"KeyNetra.from_config": {"executed_lines": [32, 33, 34, 36, 37, 38, 42], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 31}, "KeyNetra.load_policies": {"executed_lines": [45, 46, 47], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [48], "excluded_lines": [], "start_line": 44}, "KeyNetra.load_model": {"executed_lines": [51, 52], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "KeyNetra.check_access": {"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": [], "start_line": 57}, "KeyNetra._subject_to_user": {"executed_lines": [78, 79, 80, 81, 82], "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": [83], "excluded_lines": [], "start_line": 77}, "KeyNetra._resource_to_payload": {"executed_lines": [86, 88, 89], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [87], "excluded_lines": [], "start_line": 85}, "_parse_descriptor": {"executed_lines": [98, 99, 100, 101, 102], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 14, 19, 20, 23, 24, 27, 28, 30, 31, 44, 50, 57, 77, 85, 97], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"KeyNetra": {"executed_lines": [32, 33, 34, 36, 37, 38, 42, 45, 46, 47, 51, 52, 65, 66, 67, 78, 79, 80, 81, 82, 86, 88, 89], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 88.46153846153847, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88"}, "missing_lines": [48, 83, 87], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 14, 19, 20, 23, 24, 27, 28, 30, 31, 44, 50, 57, 77, 85, 97, 98, 99, 100, 101, 102], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/access_index_cache.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 17, 18, 20, 23, 31, 32, 33, 34, 35, 39, 42, 43, 44, 45, 47, 48, 50, 77, 79, 88, 102, 113, 114, 120, 121, 123, 124, 126, 127, 137, 139, 140, 143, 144], "summary": {"covered_lines": 42, "num_statements": 49, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [36, 37, 38, 40, 41, 46, 49], "excluded_lines": [], "functions": {"RedisBackedAccessIndexCache.__init__": {"executed_lines": [17, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "RedisBackedAccessIndexCache.get": {"executed_lines": [23, 31, 32, 33, 34, 35, 39, 42, 43, 44, 45, 47, 48, 50, 77], "summary": {"covered_lines": 15, "num_statements": 22, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 68.18181818181819, "percent_statements_covered_display": "68"}, "missing_lines": [36, 37, 38, 40, 41, 46, 49], "excluded_lines": [], "start_line": 20}, "RedisBackedAccessIndexCache.set": {"executed_lines": [88, 102], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 79}, "RedisBackedAccessIndexCache.invalidate": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "RedisBackedAccessIndexCache.invalidate_tenant": {"executed_lines": [121], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 120}, "RedisBackedAccessIndexCache.invalidate_global": {"executed_lines": [124], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "RedisBackedAccessIndexCache._key": {"executed_lines": [127, 137], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 126}, "RedisBackedAccessIndexCache._namespace_key": {"executed_lines": [140], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 139}, "build_access_index_cache": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 143}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 20, 79, 113, 120, 123, 126, 139, 143], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisBackedAccessIndexCache": {"executed_lines": [17, 18, 23, 31, 32, 33, 34, 35, 39, 42, 43, 44, 45, 47, 48, 50, 77, 88, 102, 114, 121, 124, 127, 137, 140], "summary": {"covered_lines": 25, "num_statements": 32, "percent_covered": 78.125, "percent_covered_display": "78", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 78.125, "percent_statements_covered_display": "78"}, "missing_lines": [36, 37, 38, 40, 41, 46, 49], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 20, 79, 113, 120, 123, 126, 139, 143, 144], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/acl_cache.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 17, 18, 20, 23, 31, 32, 33, 62, 71, 72, 83, 84, 90, 93, 94, 103, 105, 106, 109, 110], "summary": {"covered_lines": 28, "num_statements": 44, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 63.63636363636363, "percent_statements_covered_display": "64"}, "missing_lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 60, 91], "excluded_lines": [], "functions": {"RedisBackedACLCache.__init__": {"executed_lines": [17, 18], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "RedisBackedACLCache.get": {"executed_lines": [23, 31, 32, 33], "summary": {"covered_lines": 4, "num_statements": 19, "percent_covered": 21.05263157894737, "percent_covered_display": "21", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 21.05263157894737, "percent_statements_covered_display": "21"}, "missing_lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 60], "excluded_lines": [], "start_line": 20}, "RedisBackedACLCache.set": {"executed_lines": [71, 72], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "RedisBackedACLCache.invalidate": {"executed_lines": [84], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "RedisBackedACLCache.invalidate_global": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [91], "excluded_lines": [], "start_line": 90}, "RedisBackedACLCache._key": {"executed_lines": [94, 103], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "RedisBackedACLCache._namespace_key": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "build_acl_cache": {"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": [], "start_line": 109}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 20, 62, 83, 90, 93, 105, 109], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisBackedACLCache": {"executed_lines": [17, 18, 23, 31, 32, 33, 71, 72, 84, 94, 103, 106], "summary": {"covered_lines": 12, "num_statements": 28, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 60, 91], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 20, 62, 83, 90, 93, 105, 109, 110], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/backends.py": {"executed_lines": [7, 9, 10, 11, 13, 15, 18, 30, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 53, 54, 55, 56, 57, 60, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 76, 77, 78, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 93, 94, 95, 96, 97, 98, 101, 104, 107, 108, 109], "summary": {"covered_lines": 64, "num_statements": 66, "percent_covered": 96.96969696969697, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 10, "percent_statements_covered": 96.96969696969697, "percent_statements_covered_display": "97"}, "missing_lines": [74, 79], "excluded_lines": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "functions": {"CacheBackend.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [21], "start_line": 21}, "CacheBackend.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23], "start_line": 23}, "CacheBackend.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [25], "start_line": 25}, "CacheBackend.incr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [27], "start_line": 27}, "InMemoryCacheBackend.__init__": {"executed_lines": [34], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 33}, "InMemoryCacheBackend.get": {"executed_lines": [37, 38, 39, 40, 41, 42, 43, 44], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "InMemoryCacheBackend.set": {"executed_lines": [47, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "InMemoryCacheBackend.delete": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "InMemoryCacheBackend.incr": {"executed_lines": [54, 55, 56, 57], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 53}, "RedisCacheBackend.__init__": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "RedisCacheBackend.get": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [74], "excluded_lines": [], "start_line": 66}, "RedisCacheBackend.set": {"executed_lines": [77, 78, 81, 82, 83, 84], "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": [79], "excluded_lines": [], "start_line": 76}, "RedisCacheBackend.delete": {"executed_lines": [87, 88, 89, 90, 91], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 86}, "RedisCacheBackend.incr": {"executed_lines": [94, 95, 96, 97, 98], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "build_cache_backend": {"executed_lines": [107, 108, 109], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 104}, "": {"executed_lines": [7, 9, 10, 11, 13, 15, 18, 30, 33, 36, 46, 50, 53, 60, 63, 66, 76, 86, 93, 101, 104], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 22, 24, 26, 28, 29], "start_line": 1}}, "classes": {"CacheBackend": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [21, 23, 25, 27], "start_line": 18}, "InMemoryCacheBackend": {"executed_lines": [34, 37, 38, 39, 40, 41, 42, 43, 44, 47, 48, 51, 54, 55, 56, 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": [], "start_line": 30}, "RedisCacheBackend": {"executed_lines": [64, 67, 68, 69, 70, 71, 72, 73, 77, 78, 81, 82, 83, 84, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 92.3076923076923, "percent_statements_covered_display": "92"}, "missing_lines": [74, 79], "excluded_lines": [], "start_line": 60}, "": {"executed_lines": [7, 9, 10, 11, 13, 15, 18, 30, 33, 36, 46, 50, 53, 60, 63, 66, 76, 86, 93, 101, 104, 107, 108, 109], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 22, 24, 26, 28, 29], "start_line": 1}}}, "keynetra/infrastructure/cache/decision_cache.py": {"executed_lines": [8, 10, 11, 12, 14, 15, 16, 19, 20, 23, 26, 27, 29, 30, 31, 32, 33, 34, 37, 61, 62, 71, 73, 81, 82, 91, 92, 94, 95, 97, 98, 99, 101, 102, 105, 108], "summary": {"covered_lines": 36, "num_statements": 38, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95"}, "missing_lines": [35, 36], "excluded_lines": [], "functions": {"_stable_json": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "RedisBackedDecisionCache.__init__": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "RedisBackedDecisionCache.get": {"executed_lines": [30, 31, 32, 33, 34, 37], "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": [35, 36], "excluded_lines": [], "start_line": 29}, "RedisBackedDecisionCache.set": {"executed_lines": [62, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 61}, "RedisBackedDecisionCache.make_key": {"executed_lines": [81, 82, 91, 92], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 73}, "RedisBackedDecisionCache.bump_namespace": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 94}, "RedisBackedDecisionCache._tenant_namespace": {"executed_lines": [98, 99], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 97}, "RedisBackedDecisionCache._namespace_key": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "build_decision_cache": {"executed_lines": [108], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 105}, "": {"executed_lines": [8, 10, 11, 12, 14, 15, 16, 19, 23, 26, 29, 61, 73, 94, 97, 101, 105], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisBackedDecisionCache": {"executed_lines": [27, 30, 31, 32, 33, 34, 37, 62, 71, 81, 82, 91, 92, 95, 98, 99, 102], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 89.47368421052632, "percent_statements_covered_display": "89"}, "missing_lines": [35, 36], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [8, 10, 11, 12, 14, 15, 16, 19, 20, 23, 26, 29, 61, 73, 94, 97, 101, 105, 108], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/policy_cache.py": {"executed_lines": [7, 9, 10, 12, 13, 14, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 32, 34, 35, 36, 38, 44, 46, 47, 48, 61, 63, 64, 66, 67, 68, 70, 71, 74, 77], "summary": {"covered_lines": 35, "num_statements": 39, "percent_covered": 89.74358974358974, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 89.74358974358974, "percent_statements_covered_display": "90"}, "missing_lines": [30, 31, 33, 37], "excluded_lines": [], "functions": {"RedisBackedPolicyCache.__init__": {"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": [], "start_line": 20}, "RedisBackedPolicyCache.get": {"executed_lines": [24, 25, 26, 27, 28, 29, 32, 34, 35, 36, 38, 44], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [30, 31, 33, 37], "excluded_lines": [], "start_line": 23}, "RedisBackedPolicyCache.set": {"executed_lines": [47, 48, 61], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 46}, "RedisBackedPolicyCache.invalidate": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "RedisBackedPolicyCache._cache_key": {"executed_lines": [67, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 66}, "RedisBackedPolicyCache._namespace_key": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 70}, "build_policy_cache": {"executed_lines": [77], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 74}, "": {"executed_lines": [7, 9, 10, 12, 13, 14, 17, 20, 23, 46, 63, 66, 70, 74], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisBackedPolicyCache": {"executed_lines": [21, 24, 25, 26, 27, 28, 29, 32, 34, 35, 36, 38, 44, 47, 48, 61, 64, 67, 68, 71], "summary": {"covered_lines": 20, "num_statements": 24, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [30, 31, 33, 37], "excluded_lines": [], "start_line": 17}, "": {"executed_lines": [7, 9, 10, 12, 13, 14, 17, 20, 23, 46, 63, 66, 70, 74, 77], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/policy_distribution.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 18, 20, 24, 25, 26, 27, 41, 44, 45, 47, 48], "summary": {"covered_lines": 23, "num_statements": 29, "percent_covered": 79.3103448275862, "percent_covered_display": "79", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 79.3103448275862, "percent_statements_covered_display": "79"}, "missing_lines": [21, 28, 29, 30, 31, 38], "excluded_lines": [], "functions": {"PolicyUpdateEvent.to_json": {"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": [], "start_line": 20}, "publish_policy_update": {"executed_lines": [25, 26, 27], "summary": {"covered_lines": 3, "num_statements": 8, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 37.5, "percent_statements_covered_display": "38"}, "missing_lines": [28, 29, 30, 31, 38], "excluded_lines": [], "start_line": 24}, "RedisPolicyEventPublisher.__init__": {"executed_lines": [45], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 44}, "RedisPolicyEventPublisher.publish_policy_update": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 18, 20, 24, 41, 44, 47], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PolicyUpdateEvent": {"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": [], "start_line": 16}, "RedisPolicyEventPublisher": {"executed_lines": [45, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 41}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 12, 15, 16, 17, 18, 20, 24, 25, 26, 27, 41, 44, 47], "summary": {"covered_lines": 21, "num_statements": 26, "percent_covered": 80.76923076923077, "percent_covered_display": "81", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 80.76923076923077, "percent_statements_covered_display": "81"}, "missing_lines": [28, 29, 30, 31, 38], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/relationship_cache.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 17, 19, 22, 25, 26, 27, 28, 31, 33, 34, 35, 37, 46, 48, 56, 57, 63, 64, 68, 69, 72, 75], "summary": {"covered_lines": 30, "num_statements": 34, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 88.23529411764706, "percent_statements_covered_display": "88"}, "missing_lines": [29, 30, 32, 36], "excluded_lines": [], "functions": {"RedisBackedRelationshipCache.__init__": {"executed_lines": [16, 17], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "RedisBackedRelationshipCache.get": {"executed_lines": [22, 25, 26, 27, 28, 31, 33, 34, 35, 37, 46], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 73.33333333333333, "percent_statements_covered_display": "73"}, "missing_lines": [29, 30, 32, 36], "excluded_lines": [], "start_line": 19}, "RedisBackedRelationshipCache.set": {"executed_lines": [56, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 48}, "RedisBackedRelationshipCache.invalidate": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "RedisBackedRelationshipCache._key": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 68}, "build_relationship_cache": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 72}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 19, 48, 63, 68, 72], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RedisBackedRelationshipCache": {"executed_lines": [16, 17, 22, 25, 26, 27, 28, 31, 33, 34, 35, 37, 46, 56, 57, 64, 69], "summary": {"covered_lines": 17, "num_statements": 21, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 80.95238095238095, "percent_statements_covered_display": "81"}, "missing_lines": [29, 30, 32, 36], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 19, 48, 63, 68, 72, 75], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/cache/user_cache.py": {"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": [1, 3, 4, 5, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 28, 29, 30, 31, 32, 33, 34, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58], "excluded_lines": [], "functions": {"get_cached_user_context": {"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": [15, 16, 17, 18, 19, 20, 21, 22, 28, 29, 30, 31, 32, 33, 34, 40, 41], "excluded_lines": [], "start_line": 14}, "set_cached_user_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 48, 49, 50, 51, 52, 58], "excluded_lines": [], "start_line": 44}, "": {"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": [1, 3, 4, 5, 7, 8, 9, 11, 14, 44], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"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": [1, 3, 4, 5, 7, 8, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 28, 29, 30, 31, 32, 33, 34, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/errors.py": {"executed_lines": [1, 4, 8, 12], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 8, 12], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"KeyNetraError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 4}, "BootstrapError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 8}, "ConfigurationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 4, 8, 12], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/logging.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 18, 19, 21, 22, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 61, 62, 65, 71, 72, 73, 74, 75, 78, 79, 80, 81, 84, 85, 88, 89, 92, 93], "summary": {"covered_lines": 55, "num_statements": 62, "percent_covered": 88.70967741935483, "percent_covered_display": "89", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 88.70967741935483, "percent_statements_covered_display": "89"}, "missing_lines": [53, 54, 55, 56, 57, 58, 59], "excluded_lines": [], "functions": {"JsonLogFormatter.format": {"executed_lines": [21, 22, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "configure_json_logging": {"executed_lines": [32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 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": [], "start_line": 31}, "configure_rich_logging": {"executed_lines": [47, 48, 49, 50, 51, 52, 61, 62, 65, 71, 72, 73, 74, 75], "summary": {"covered_lines": 14, "num_statements": 21, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [53, 54, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 46}, "log_event": {"executed_lines": [79, 80, 81], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 78}, "set_correlation_id": {"executed_lines": [85], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 84}, "reset_correlation_id": {"executed_lines": [89], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 88}, "get_correlation_id": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 18, 19, 31, 46, 78, 84, 88, 92], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"JsonLogFormatter": {"executed_lines": [21, 22, 24, 25, 26, 27, 28], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 10, 12, 18, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 61, 62, 65, 71, 72, 73, 74, 75, 78, 79, 80, 81, 84, 85, 88, 89, 92, 93], "summary": {"covered_lines": 48, "num_statements": 55, "percent_covered": 87.27272727272727, "percent_covered_display": "87", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 87.27272727272727, "percent_statements_covered_display": "87"}, "missing_lines": [53, 54, 55, 56, 57, 58, 59], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/metrics.py": {"executed_lines": [3, 5, 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": [3, 5, 11], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 11], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/__init__.py": {"executed_lines": [3, 4, 5, 6, 7, 8, 10], "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": [], "functions": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 10], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 4, 5, 6, 7, 8, 10], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/acl.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 18, 29, 38, 39, 40, 41, 43, 46, 57, 59, 60, 69, 71, 79, 91, 93, 94, 99, 101, 102], "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": [], "functions": {"SqlACLRepository.__init__": {"executed_lines": [16], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "SqlACLRepository.create_acl_entry": {"executed_lines": [29, 38, 39, 40, 41], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "SqlACLRepository.list_resource_acl": {"executed_lines": [46, 57], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 43}, "SqlACLRepository.get_acl_entry": {"executed_lines": [60, 69], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "SqlACLRepository.find_matching_acl": {"executed_lines": [79, 91], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 71}, "SqlACLRepository.delete_acl_entry": {"executed_lines": [94, 99], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 93}, "SqlACLRepository._to_record": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 101}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 18, 43, 59, 71, 93, 101], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlACLRepository": {"executed_lines": [16, 29, 38, 39, 40, 41, 46, 57, 60, 69, 79, 91, 94, 99, 102], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 18, 43, 59, 71, 93, 101], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/audit.py": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 16, 19, 20, 22, 32, 46, 47, 49, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 87, 94, 95, 96, 101, 103, 104, 105, 107, 109, 110, 111], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "98"}, "missing_lines": [106], "excluded_lines": [], "functions": {"SqlAuditRepository.__init__": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "SqlAuditRepository.write": {"executed_lines": [32, 46, 47], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "SqlAuditRepository.list_page": {"executed_lines": [61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 87, 94, 95, 96, 101], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "SqlAuditRepository._json_field": {"executed_lines": [104, 105, 107], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [106], "excluded_lines": [], "start_line": 103}, "SqlAuditRepository._to_item": {"executed_lines": [111], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 110}, "": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 16, 19, 22, 49, 103, 109, 110], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlAuditRepository": {"executed_lines": [20, 32, 46, 47, 61, 62, 63, 64, 65, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 87, 94, 95, 96, 101, 104, 105, 107, 111], "summary": {"covered_lines": 28, "num_statements": 29, "percent_covered": 96.55172413793103, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.55172413793103, "percent_statements_covered_display": "97"}, "missing_lines": [106], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [3, 5, 7, 8, 10, 11, 12, 13, 16, 19, 22, 49, 103, 109, 110], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/auth_models.py": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 16, 18, 19, 26, 28, 36, 43, 44, 50, 55, 56, 57, 59, 60], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [52, 53, 54], "excluded_lines": [], "functions": {"SqlAuthModelRepository.__init__": {"executed_lines": [16], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "SqlAuthModelRepository.get_model": {"executed_lines": [19, 26], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "SqlAuthModelRepository.upsert_model": {"executed_lines": [36, 43, 44, 50, 55, 56, 57], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 70.0, "percent_statements_covered_display": "70"}, "missing_lines": [52, 53, 54], "excluded_lines": [], "start_line": 28}, "SqlAuthModelRepository._to_record": {"executed_lines": [60], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 18, 28, 59], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlAuthModelRepository": {"executed_lines": [16, 19, 26, 36, 43, 44, 50, 55, 56, 57, 60], "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": [52, 53, 54], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [3, 5, 6, 8, 9, 12, 15, 18, 28, 59], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/idempotency.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 26, 29, 30, 32, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 52, 60, 68, 69, 71, 72, 73, 74, 75, 77, 78], "summary": {"covered_lines": 42, "num_statements": 45, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [47, 51, 70], "excluded_lines": [], "functions": {"SqlIdempotencyRepository.__init__": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 29}, "SqlIdempotencyRepository.start": {"executed_lines": [35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 52], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [47, 51], "excluded_lines": [], "start_line": 32}, "SqlIdempotencyRepository.complete": {"executed_lines": [68, 69, 71, 72, 73, 74, 75], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 87.5, "percent_statements_covered_display": "88"}, "missing_lines": [70], "excluded_lines": [], "start_line": 60}, "SqlIdempotencyRepository._get": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 77}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 26, 29, 32, 60, 77], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IdempotencyStartResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SqlIdempotencyRepository": {"executed_lines": [30, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 52, 68, 69, 71, 72, 73, 74, 75, 78], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 88.46153846153847, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.46153846153847, "percent_statements_covered_display": "88"}, "missing_lines": [47, 51, 70], "excluded_lines": [], "start_line": 26}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 15, 16, 19, 20, 21, 22, 23, 26, 29, 32, 60, 77], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/policies.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 22, 24, 27, 28, 31, 32, 33, 47, 48, 60, 62, 65, 66, 69, 70, 71, 84, 85, 96, 98, 105, 112, 122, 125, 126, 127, 139, 140, 141, 142, 143, 145, 157, 166, 167, 168, 169, 170, 172, 173, 175, 186, 187, 188, 204, 205, 214, 215, 224, 226, 236, 237, 243, 244, 253, 255, 260, 261, 263, 266, 267, 274, 275, 278, 282], "summary": {"covered_lines": 77, "num_statements": 109, "percent_covered": 70.64220183486239, "percent_covered_display": "71", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 70.64220183486239, "percent_statements_covered_display": "71"}, "missing_lines": [29, 30, 34, 46, 67, 68, 72, 83, 113, 189, 191, 192, 202, 203, 225, 238, 239, 240, 241, 254, 277, 283, 296, 297, 298, 299, 300, 301, 302, 303, 304, 316], "excluded_lines": [], "functions": {"SqlPolicyRepository.__init__": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "SqlPolicyRepository.list_current_policies": {"executed_lines": [27, 28, 31, 32, 33, 47, 48, 60], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [29, 30, 34, 46], "excluded_lines": [], "start_line": 24}, "SqlPolicyRepository.list_current_policy_views": {"executed_lines": [65, 66, 69, 70, 71, 84, 85, 96], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [67, 68, 72, 83], "excluded_lines": [], "start_line": 62}, "SqlPolicyRepository.list_current_policy_page": {"executed_lines": [105, 112, 122, 125, 126, 127, 139, 140, 141, 142, 143], "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": [113], "excluded_lines": [], "start_line": 98}, "SqlPolicyRepository.create_policy_version": {"executed_lines": [157, 166, 167, 168, 169, 170, 172, 173, 175, 186, 187, 188, 204, 205], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 73.6842105263158, "percent_statements_covered_display": "74"}, "missing_lines": [189, 191, 192, 202, 203], "excluded_lines": [], "start_line": 145}, "SqlPolicyRepository.rollback_policy": {"executed_lines": [215, 224, 226, 236, 237], "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": [225, 238, 239, 240, 241], "excluded_lines": [], "start_line": 214}, "SqlPolicyRepository.delete_policy": {"executed_lines": [244, 253, 255, 260, 261], "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": [254], "excluded_lines": [], "start_line": 243}, "SqlPolicyRepository._current_policy_rows": {"executed_lines": [266, 267, 274, 275, 278], "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": [277], "excluded_lines": [], "start_line": 263}, "SqlPolicyRepository._legacy_current_policy_rows": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [283, 296, 297, 298, 299, 300, 301, 302, 303, 304, 316], "excluded_lines": [], "start_line": 282}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 24, 62, 98, 145, 214, 243, 263, 282], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlPolicyRepository": {"executed_lines": [22, 27, 28, 31, 32, 33, 47, 48, 60, 65, 66, 69, 70, 71, 84, 85, 96, 105, 112, 122, 125, 126, 127, 139, 140, 141, 142, 143, 157, 166, 167, 168, 169, 170, 172, 173, 175, 186, 187, 188, 204, 205, 215, 224, 226, 236, 237, 244, 253, 255, 260, 261, 266, 267, 274, 275, 278], "summary": {"covered_lines": 57, "num_statements": 89, "percent_covered": 64.04494382022472, "percent_covered_display": "64", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 64.04494382022472, "percent_statements_covered_display": "64"}, "missing_lines": [29, 30, 34, 46, 67, 68, 72, 83, 113, 189, 191, 192, 202, 203, 225, 238, 239, 240, 241, 254, 277, 283, 296, 297, 298, 299, 300, 301, 302, 303, 304, 316], "excluded_lines": [], "start_line": 18}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 12, 13, 14, 15, 18, 21, 24, 62, 98, 145, 214, 243, 263, 282], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/relationships.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 17, 19, 22, 38, 49, 58, 64, 85, 97, 98, 99, 109, 110, 120, 122, 125, 141, 152, 155, 156, 189, 228, 238, 246, 247, 248, 249], "summary": {"covered_lines": 35, "num_statements": 51, "percent_covered": 68.62745098039215, "percent_covered_display": "69", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 68.62745098039215, "percent_statements_covered_display": "69"}, "missing_lines": [65, 111, 112, 157, 174, 177, 178, 187, 192, 193, 194, 198, 215, 216, 217, 226], "excluded_lines": [], "functions": {"SqlRelationshipRepository.__init__": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SqlRelationshipRepository.list_for_subject": {"executed_lines": [22, 38], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "SqlRelationshipRepository.list_for_subject_page": {"executed_lines": [58, 64, 85, 97, 98, 99, 109, 110, 120], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [65, 111, 112], "excluded_lines": [], "start_line": 49}, "SqlRelationshipRepository.list_for_object": {"executed_lines": [125, 141], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 122}, "SqlRelationshipRepository.list_for_subjects": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 7, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [157, 174, 177, 178, 187], "excluded_lines": [], "start_line": 152}, "SqlRelationshipRepository.list_for_objects": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [192, 193, 194, 198, 215, 216, 217, 226], "excluded_lines": [], "start_line": 189}, "SqlRelationshipRepository.create": {"executed_lines": [238, 246, 247, 248, 249], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 228}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 19, 49, 122, 152, 189, 228], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlRelationshipRepository": {"executed_lines": [17, 22, 38, 58, 64, 85, 97, 98, 99, 109, 110, 120, 125, 141, 155, 156, 238, 246, 247, 248, 249], "summary": {"covered_lines": 21, "num_statements": 37, "percent_covered": 56.75675675675676, "percent_covered_display": "57", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 56.75675675675676, "percent_statements_covered_display": "57"}, "missing_lines": [65, 111, 112, 157, 174, 177, 178, 187, 192, 193, 194, 198, 215, 216, 217, 226], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 13, 16, 19, 49, 122, 152, 189, 228], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/tenants.py": {"executed_lines": [7, 9, 10, 12, 13, 16, 19, 20, 22, 30, 31, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55, 57, 58, 59, 60, 62, 63], "summary": {"covered_lines": 34, "num_statements": 40, "percent_covered": 85.0, "percent_covered_display": "85", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 85.0, "percent_statements_covered_display": "85"}, "missing_lines": [23, 26, 27, 28, 47, 56], "excluded_lines": [], "functions": {"SqlTenantRepository.__init__": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "SqlTenantRepository.get_by_id": {"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": [23, 26, 27, 28], "excluded_lines": [], "start_line": 22}, "SqlTenantRepository.get_or_create": {"executed_lines": [31, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "SqlTenantRepository.bump_policy_version": {"executed_lines": [45, 46, 48, 49, 50, 51], "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": [47], "excluded_lines": [], "start_line": 44}, "SqlTenantRepository.bump_revision": {"executed_lines": [54, 55, 57, 58, 59, 60], "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": [56], "excluded_lines": [], "start_line": 53}, "SqlTenantRepository._to_record": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 62}, "": {"executed_lines": [7, 9, 10, 12, 13, 16, 19, 22, 30, 44, 53, 62], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlTenantRepository": {"executed_lines": [20, 31, 36, 37, 38, 39, 40, 41, 42, 45, 46, 48, 49, 50, 51, 54, 55, 57, 58, 59, 60, 63], "summary": {"covered_lines": 22, "num_statements": 28, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [23, 26, 27, 28, 47, 56], "excluded_lines": [], "start_line": 16}, "": {"executed_lines": [7, 9, 10, 12, 13, 16, 19, 22, 30, 44, 53, 62], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/repositories/users.py": {"executed_lines": [3, 5, 7, 8, 10, 13, 16, 17, 19, 20, 29, 30, 45, 46, 47, 49, 50, 51], "summary": {"covered_lines": 18, "num_statements": 37, "percent_covered": 48.648648648648646, "percent_covered_display": "49", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 48.648648648648646, "percent_statements_covered_display": "49"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 38, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 75], "excluded_lines": [], "functions": {"SqlUserRepository.__init__": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "SqlUserRepository.get_user_context": {"executed_lines": [20, 29, 30], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 38], "excluded_lines": [], "start_line": 19}, "SqlUserRepository.list_user_ids": {"executed_lines": [46, 47], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 45}, "SqlUserRepository.get_user_contexts": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 13, "percent_covered": 15.384615384615385, "percent_covered_display": "15", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 15.384615384615385, "percent_statements_covered_display": "15"}, "missing_lines": [52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 75], "excluded_lines": [], "start_line": 49}, "": {"executed_lines": [3, 5, 7, 8, 10, 13, 16, 19, 45, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SqlUserRepository": {"executed_lines": [17, 20, 29, 30, 46, 47, 50, 51], "summary": {"covered_lines": 8, "num_statements": 27, "percent_covered": 29.62962962962963, "percent_covered_display": "30", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 29.62962962962963, "percent_statements_covered_display": "30"}, "missing_lines": [31, 32, 33, 34, 35, 36, 37, 38, 52, 61, 62, 63, 64, 65, 66, 67, 68, 69, 75], "excluded_lines": [], "start_line": 13}, "": {"executed_lines": [3, 5, 7, 8, 10, 13, 16, 19, 45, 49], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/storage/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/infrastructure/storage/session.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 42, 43, 45, 55, 58, 59, 60, 61, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 83, 84, 85, 86, 87, 88, 89, 91], "summary": {"covered_lines": 44, "num_statements": 46, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 16, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [49, 67], "excluded_lines": [22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], "functions": {"_operation_name": {"executed_lines": [18, 19], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "_before_cursor_execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [26], "start_line": 23}, "_after_cursor_execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [33, 34, 35, 36, 37, 38, 39], "start_line": 30}, "create_engine_for_url": {"executed_lines": [45, 55], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [49], "excluded_lines": [], "start_line": 43}, "create_session_factory": {"executed_lines": [60, 61], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 59}, "initialize_database": {"executed_lines": [66, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80], "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": [67], "excluded_lines": [], "start_line": 65}, "get_db": {"executed_lines": [84, 85, 86, 87, 88, 89, 91], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 83}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 17, 42, 43, 58, 59, 64, 65, 83], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 8, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [22, 23, 24, 25, 29, 30, 31, 32], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 42, 43, 45, 55, 58, 59, 60, 61, 64, 65, 66, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 83, 84, 85, 86, 87, 88, 89, 91], "summary": {"covered_lines": 44, "num_statements": 46, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 16, "percent_statements_covered": 95.65217391304348, "percent_statements_covered_display": "96"}, "missing_lines": [49, 67], "excluded_lines": [22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39], "start_line": 1}}}, "keynetra/main.py": {"executed_lines": [6, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [6, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [6, 8], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/migrations.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [16, 17], "excluded_lines": [], "functions": {"parse_revision_file": {"executed_lines": [14, 15, 18, 19, 20, 21], "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": [16, 17], "excluded_lines": [], "start_line": 13}, "find_destructive_revisions": {"executed_lines": [25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 13, 24], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 9, 10, 13, 14, 15, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 91.30434782608695, "percent_statements_covered_display": "91"}, "missing_lines": [16, 17], "excluded_lines": [], "start_line": 1}}}, "keynetra/modeling/__init__.py": {"executed_lines": [1, 2, 3, 5], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "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, 5], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 2, 3, 5], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/modeling/model_validator.py": {"executed_lines": [3, 5, 14, 15, 17, 19, 21, 23, 24, 26, 27, 29, 30, 32, 35, 36, 37, 39, 40, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 34, "percent_covered": 67.6470588235294, "percent_covered_display": "68", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 67.6470588235294, "percent_statements_covered_display": "68"}, "missing_lines": [16, 18, 20, 22, 25, 28, 31, 38, 41, 42, 47], "excluded_lines": [], "functions": {"validate_authorization_schema": {"executed_lines": [15, 17, 19, 21, 23, 24, 26, 27, 29, 30, 32], "summary": {"covered_lines": 11, "num_statements": 18, "percent_covered": 61.111111111111114, "percent_covered_display": "61", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 61.111111111111114, "percent_statements_covered_display": "61"}, "missing_lines": [16, 18, 20, 22, 25, 28, 31], "excluded_lines": [], "start_line": 14}, "_validate_expr": {"executed_lines": [36, 37, 39, 40, 43, 44, 45, 46], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [38, 41, 42, 47], "excluded_lines": [], "start_line": 35}, "": {"executed_lines": [3, 5, 14, 35], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 14, 15, 17, 19, 21, 23, 24, 26, 27, 29, 30, 32, 35, 36, 37, 39, 40, 43, 44, 45, 46], "summary": {"covered_lines": 23, "num_statements": 34, "percent_covered": 67.6470588235294, "percent_covered_display": "68", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 67.6470588235294, "percent_statements_covered_display": "68"}, "missing_lines": [16, 18, 20, 22, 25, 28, 31, 38, 41, 42, 47], "excluded_lines": [], "start_line": 1}}}, "keynetra/modeling/permission_compiler.py": {"executed_lines": [3, 5, 6, 8, 9, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 34, 35, 47, 50, 53, 54, 58, 67, 68, 69, 70, 72, 74, 75], "summary": {"covered_lines": 30, "num_statements": 33, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.9090909090909, "percent_statements_covered_display": "91"}, "missing_lines": [71, 73, 76], "excluded_lines": [], "functions": {"CompiledAuthorizationModel.to_dict": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "compile_authorization_schema": {"executed_lines": [50, 53, 54, 58], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "_expr_to_dict": {"executed_lines": [68, 69, 70, 72, 74, 75], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [71, 73, 76], "excluded_lines": [], "start_line": 67}, "": {"executed_lines": [3, 5, 6, 8, 9, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 34, 47, 67], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"CompiledPermission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "CompiledAuthorizationModel": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 5, 6, 8, 9, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 34, 47, 50, 53, 54, 58, 67, 68, 69, 70, 72, 74, 75], "summary": {"covered_lines": 29, "num_statements": 32, "percent_covered": 90.625, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.625, "percent_statements_covered_display": "91"}, "missing_lines": [71, 73, 76], "excluded_lines": [], "start_line": 1}}}, "keynetra/modeling/schema_parser.py": {"executed_lines": [3, 5, 6, 7, 10, 11, 12, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 35, 36, 37, 38, 39, 40, 41, 44, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 82, 91, 92, 94, 95, 96, 97, 99, 101, 102, 104, 107, 108, 110, 111, 112, 113, 115, 116, 117, 119, 122, 123, 124, 126, 129, 130, 131, 132, 133, 134, 137, 138, 139, 142, 145, 146, 148, 149, 150, 153, 158, 160], "summary": {"covered_lines": 98, "num_statements": 119, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82"}, "missing_lines": [51, 56, 80, 93, 98, 100, 103, 109, 114, 118, 125, 140, 141, 147, 151, 152, 154, 155, 156, 157, 159], "excluded_lines": [], "functions": {"parse_authorization_schema": {"executed_lines": [48, 49, 50, 53, 54, 55, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 82], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.3225806451613, "percent_statements_covered_display": "90"}, "missing_lines": [51, 56, 80], "excluded_lines": [], "start_line": 47}, "_parse_relation": {"executed_lines": [92, 94, 95, 96, 97, 99, 101, 102, 104], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 69.23076923076923, "percent_statements_covered_display": "69"}, "missing_lines": [93, 98, 100, 103], "excluded_lines": [], "start_line": 91}, "_parse_permission": {"executed_lines": [108, 110, 111, 112, 113, 115, 116, 117, 119], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [109, 114, 118], "excluded_lines": [], "start_line": 107}, "_tokenize": {"executed_lines": [123, 124, 126], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [125], "excluded_lines": [], "start_line": 122}, "_parse_expr": {"executed_lines": [130, 131, 132, 133, 134], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 129}, "_parse_term": {"executed_lines": [138, 139, 142], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 60.0, "percent_statements_covered_display": "60"}, "missing_lines": [140, 141], "excluded_lines": [], "start_line": 137}, "_parse_factor": {"executed_lines": [146, 148, 149, 150, 153, 158, 160], "summary": {"covered_lines": 7, "num_statements": 15, "percent_covered": 46.666666666666664, "percent_covered_display": "47", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 46.666666666666664, "percent_statements_covered_display": "47"}, "missing_lines": [147, 151, 152, 154, 155, 156, 157, 159], "excluded_lines": [], "start_line": 145}, "": {"executed_lines": [3, 5, 6, 7, 10, 11, 12, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 35, 36, 37, 38, 39, 40, 41, 44, 47, 91, 107, 122, 129, 137, 145], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"IdentifierExpr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 11}, "NotExpr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "AndExpr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "OrExpr": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "AuthorizationSchema": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 36}, "": {"executed_lines": [3, 5, 6, 7, 10, 11, 12, 15, 16, 17, 20, 21, 22, 23, 26, 27, 28, 29, 32, 35, 36, 37, 38, 39, 40, 41, 44, 47, 48, 49, 50, 53, 54, 55, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 82, 91, 92, 94, 95, 96, 97, 99, 101, 102, 104, 107, 108, 110, 111, 112, 113, 115, 116, 117, 119, 122, 123, 124, 126, 129, 130, 131, 132, 133, 134, 137, 138, 139, 142, 145, 146, 148, 149, 150, 153, 158, 160], "summary": {"covered_lines": 98, "num_statements": 119, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 82.3529411764706, "percent_statements_covered_display": "82"}, "missing_lines": [51, 56, 80, 93, 98, 100, 103, 109, 114, 118, 125, 140, 141, 147, 151, 152, 154, 155, 156, 157, 159], "excluded_lines": [], "start_line": 1}}}, "keynetra/observability/__init__.py": {"executed_lines": [1, 3, 19], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "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, 19], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 19], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/observability/http_metrics.py": {"executed_lines": [3, 5, 6, 11, 12, 17, 27, 30, 31, 32, 33, 35, 36, 42, 43], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8, 9, 22, 23, 24], "functions": {"record_http_request": {"executed_lines": [30, 31, 32, 33, 35, 36, 42, 43], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 27}, "": {"executed_lines": [3, 5, 6, 11, 12, 17, 27], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8, 9, 22, 23, 24], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 11, 12, 17, 27, 30, 31, 32, 33, 35, 36, 42, 43], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8, 9, 22, 23, 24], "start_line": 1}}}, "keynetra/observability/metrics.py": {"executed_lines": [3, 5, 6, 11, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 82, 87, 92, 97, 123, 124, 125, 128, 129, 130, 137, 138, 139, 142, 143, 144, 147, 148, 149, 152, 153, 154, 157, 158, 159, 162, 163, 164, 167, 168, 169, 174, 175, 176, 177, 180, 181, 182, 183, 186, 187, 188, 189, 190, 191, 193, 194, 196, 197, 201, 202, 203, 206, 207, 208, 211, 212, 213, 216, 217, 218, 221, 226, 227, 228, 231, 232, 233], "summary": {"covered_lines": 86, "num_statements": 90, "percent_covered": 95.55555555555556, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 22, "percent_statements_covered": 95.55555555555556, "percent_statements_covered_display": "96"}, "missing_lines": [192, 198, 222, 223], "excluded_lines": [7, 8, 9, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "functions": {"_tenant_label": {"executed_lines": [124, 125], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 123}, "_cache_type_label": {"executed_lines": [129, 130], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 128}, "record_access_check": {"executed_lines": [138, 139], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 137}, "record_acl_match": {"executed_lines": [143, 144], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 142}, "record_policy_evaluation": {"executed_lines": [148, 149], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "record_relationship_traversal": {"executed_lines": [153, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 152}, "record_policy_compilation": {"executed_lines": [158, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 157}, "record_revision_update": {"executed_lines": [163, 164], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 162}, "observe_access_check_latency": {"executed_lines": [168, 169], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 167}, "record_cache_hit": {"executed_lines": [175, 176, 177], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 174}, "record_cache_miss": {"executed_lines": [181, 182, 183], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 180}, "record_cache_event": {"executed_lines": [187, 188, 189, 190, 191, 193, 194, 196, 197], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [192, 198], "excluded_lines": [], "start_line": 186}, "observe_decision_latency": {"executed_lines": [202, 203], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 201}, "record_api_error": {"executed_lines": [207, 208], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 206}, "record_bootstrap_failure": {"executed_lines": [212, 213], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 211}, "record_auth_failure": {"executed_lines": [217, 218], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 216}, "record_jwks_fetch": {"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": [222, 223], "excluded_lines": [], "start_line": 221}, "record_access_index_rebuild": {"executed_lines": [227, 228], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 226}, "observe_db_query_latency": {"executed_lines": [232, 233], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 231}, "": {"executed_lines": [3, 5, 6, 11, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 82, 87, 92, 97, 123, 128, 137, 142, 147, 152, 157, 162, 167, 174, 180, 186, 201, 206, 211, 216, 221, 226, 231], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 22, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8, 9, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 11, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57, 62, 67, 72, 77, 82, 87, 92, 97, 123, 124, 125, 128, 129, 130, 137, 138, 139, 142, 143, 144, 147, 148, 149, 152, 153, 154, 157, 158, 159, 162, 163, 164, 167, 168, 169, 174, 175, 176, 177, 180, 181, 182, 183, 186, 187, 188, 189, 190, 191, 193, 194, 196, 197, 201, 202, 203, 206, 207, 208, 211, 212, 213, 216, 217, 218, 221, 226, 227, 228, 231, 232, 233], "summary": {"covered_lines": 86, "num_statements": 90, "percent_covered": 95.55555555555556, "percent_covered_display": "96", "missing_lines": 4, "excluded_lines": 22, "percent_statements_covered": 95.55555555555556, "percent_statements_covered_display": "96"}, "missing_lines": [192, 198, 222, 223], "excluded_lines": [7, 8, 9, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120], "start_line": 1}}}, "keynetra/services/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/access_indexer.py": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 21, 22, 23, 24, 26, 30, 36, 39, 47, 48, 49, 50, 51, 52, 53, 54, 56, 64, 70, 71, 72, 73, 74, 83, 89, 90, 92, 100, 101, 107, 108, 114, 122, 128, 142, 143, 164, 171, 173, 203, 204, 205, 206, 207, 214, 219, 220, 222, 223, 226, 229, 230, 235, 238, 245, 274, 275], "summary": {"covered_lines": 64, "num_statements": 114, "percent_covered": 56.14035087719298, "percent_covered_display": "56", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 56.14035087719298, "percent_statements_covered_display": "56"}, "missing_lines": [27, 31, 75, 81, 176, 177, 178, 179, 180, 182, 183, 184, 190, 191, 193, 194, 196, 201, 208, 209, 210, 211, 212, 236, 239, 240, 241, 242, 243, 246, 247, 248, 249, 250, 251, 252, 255, 256, 257, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272], "excluded_lines": [], "functions": {"AccessSubject.to_descriptor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27], "excluded_lines": [], "start_line": 26}, "relationship_descriptor": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31], "excluded_lines": [], "start_line": 30}, "AccessIndexer.__init__": {"executed_lines": [47, 48, 49, 50, 51, 52, 53, 54], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "AccessIndexer.build_resource_index": {"executed_lines": [64, 70, 71, 72, 73, 74, 83, 89, 90], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 81.81818181818181, "percent_statements_covered_display": "82"}, "missing_lines": [75, 81], "excluded_lines": [], "start_line": 56}, "AccessIndexer._rebuild_resource_index": {"executed_lines": [100, 101, 107, 108, 114, 122, 128, 142, 143, 164, 171], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 92}, "AccessIndexer._schedule_background_refresh": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [176, 177, 178, 179, 180, 182, 196, 201], "excluded_lines": [], "start_line": 173}, "AccessIndexer._schedule_background_refresh.run": {"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": [183, 184, 190, 191, 193, 194], "excluded_lines": [], "start_line": 182}, "AccessIndexer._memo_get": {"executed_lines": [204, 205, 206, 207], "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": [208, 209, 210, 211, 212], "excluded_lines": [], "start_line": 203}, "AccessIndexer._memo_set": {"executed_lines": [219, 220], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 214}, "AccessIndexer.invalidate_resource": {"executed_lines": [223, 226, 229, 230, 235], "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": [236], "excluded_lines": [], "start_line": 222}, "AccessIndexer.invalidate_tenant": {"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": [239, 240, 241, 242, 243], "excluded_lines": [], "start_line": 238}, "AccessIndexer.subject_descriptors": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [246, 247, 248, 249, 250, 251, 252, 255, 256, 257, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272], "excluded_lines": [], "start_line": 245}, "AccessIndexer._subject_descriptor": {"executed_lines": [275], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 274}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 21, 22, 23, 24, 26, 30, 36, 39, 56, 92, 173, 203, 214, 222, 238, 245, 274], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AccessSubject": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27], "excluded_lines": [], "start_line": 22}, "AccessIndexer": {"executed_lines": [47, 48, 49, 50, 51, 52, 53, 54, 64, 70, 71, 72, 73, 74, 83, 89, 90, 100, 101, 107, 108, 114, 122, 128, 142, 143, 164, 171, 204, 205, 206, 207, 219, 220, 223, 226, 229, 230, 235, 275], "summary": {"covered_lines": 40, "num_statements": 88, "percent_covered": 45.45454545454545, "percent_covered_display": "45", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45"}, "missing_lines": [75, 81, 176, 177, 178, 179, 180, 182, 183, 184, 190, 191, 193, 194, 196, 201, 208, 209, 210, 211, 212, 236, 239, 240, 241, 242, 243, 246, 247, 248, 249, 250, 251, 252, 255, 256, 257, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272], "excluded_lines": [], "start_line": 36}, "": {"executed_lines": [3, 5, 6, 7, 8, 10, 11, 21, 22, 23, 24, 26, 30, 36, 39, 56, 92, 173, 203, 214, 222, 238, 245, 274], "summary": {"covered_lines": 24, "num_statements": 25, "percent_covered": 96.0, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 96.0, "percent_statements_covered_display": "96"}, "missing_lines": [31], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/attribute_validation.py": {"executed_lines": [1, 3, 6, 7, 10, 11, 13, 15, 17, 18, 20, 22, 26, 27, 30, 31], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [12, 14, 16, 19, 21, 23], "excluded_lines": [], "functions": {"_validate_dict": {"executed_lines": [11, 13, 15, 17, 18, 20, 22], "summary": {"covered_lines": 7, "num_statements": 13, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 53.84615384615385, "percent_statements_covered_display": "54"}, "missing_lines": [12, 14, 16, 19, 21, 23], "excluded_lines": [], "start_line": 10}, "validate_user": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 26}, "validate_resource": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "": {"executed_lines": [1, 3, 6, 7, 10, 26, 30], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AttributeValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 6}, "": {"executed_lines": [1, 3, 6, 7, 10, 11, 13, 15, 17, 18, 20, 22, 26, 27, 30, 31], "summary": {"covered_lines": 16, "num_statements": 22, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 72.72727272727273, "percent_statements_covered_display": "73"}, "missing_lines": [12, 14, 16, 19, 21, 23], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/audit.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 9], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 9], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 9], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/authorization.py": {"executed_lines": [7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 24, 25, 26, 27, 28, 29, 44, 45, 48, 49, 52, 53, 54, 57, 60, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 105, 107, 121, 122, 123, 124, 131, 132, 139, 140, 143, 144, 146, 147, 148, 153, 154, 160, 161, 162, 165, 171, 177, 178, 179, 180, 181, 189, 209, 211, 239, 251, 252, 253, 254, 255, 256, 260, 261, 292, 293, 296, 297, 298, 299, 300, 301, 306, 309, 317, 322, 323, 324, 330, 331, 335, 336, 339, 341, 349, 353, 355, 379, 389, 398, 400, 401, 403, 421, 430, 431, 432, 436, 437, 449, 459, 460, 461, 462, 463, 464, 470, 471, 472, 473, 479, 480, 488, 499, 500, 501, 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, 517, 518, 526, 532, 533, 535, 538, 539, 542, 547, 549, 550, 551, 554, 556, 558, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 574, 575, 601, 602, 612, 613, 623, 626, 627, 628, 629, 632, 656, 657, 658, 660, 661, 662, 676, 677, 679, 680, 681, 690, 691, 699, 700, 701, 715, 716, 718, 721, 722, 738, 739, 740, 756, 759, 761, 764, 765, 786, 787, 794, 795, 797, 798, 799], "summary": {"covered_lines": 217, "num_statements": 255, "percent_covered": 85.09803921568627, "percent_covered_display": "85", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 85.09803921568627, "percent_statements_covered_display": "85"}, "missing_lines": [190, 191, 201, 225, 267, 268, 274, 307, 332, 333, 338, 367, 412, 419, 465, 467, 468, 469, 651, 652, 666, 667, 668, 675, 705, 706, 707, 714, 729, 730, 746, 747, 748, 755, 777, 778, 806, 807], "excluded_lines": [], "functions": {"AuthorizationService.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 105], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 60}, "AuthorizationService.authorize": {"executed_lines": [121, 122, 123, 124, 131, 132, 139, 140, 143, 144, 146, 147, 148, 153, 154, 160, 161, 162, 165, 171, 177, 178, 179, 180, 181, 189, 209], "summary": {"covered_lines": 27, "num_statements": 30, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [190, 191, 201], "excluded_lines": [], "start_line": 107}, "AuthorizationService.authorize_async": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [225], "excluded_lines": [], "start_line": 211}, "AuthorizationService.authorize_batch": {"executed_lines": [251, 252, 253, 254, 255, 256, 260, 261, 292, 293, 296, 297, 298, 299, 300, 301, 306, 309, 317, 322, 323, 324, 330, 331, 335, 336, 339, 341, 349, 353], "summary": {"covered_lines": 30, "num_statements": 37, "percent_covered": 81.08108108108108, "percent_covered_display": "81", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 81.08108108108108, "percent_statements_covered_display": "81"}, "missing_lines": [267, 268, 274, 307, 332, 333, 338], "excluded_lines": [], "start_line": 239}, "AuthorizationService.authorize_batch_async": {"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": [367], "excluded_lines": [], "start_line": 355}, "AuthorizationService.simulate": {"executed_lines": [389, 398], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 379}, "AuthorizationService.get_revision": {"executed_lines": [401], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 400}, "AuthorizationService.build_input": {"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": [412, 419], "excluded_lines": [], "start_line": 403}, "AuthorizationService._build_input": {"executed_lines": [430, 431, 432, 436, 437], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 421}, "AuthorizationService._build_authorization_input": {"executed_lines": [459, 460, 461, 462, 463, 464, 470, 471, 472, 473, 479, 480, 488], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 76.47058823529412, "percent_statements_covered_display": "76"}, "missing_lines": [465, 467, 468, 469], "excluded_lines": [], "start_line": 449}, "AuthorizationService._hydrate_user": {"executed_lines": [500, 501, 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, 517, 518, 526, 532, 533], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 499}, "AuthorizationService._build_engine": {"executed_lines": [538, 539, 542, 547, 549, 558, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 535}, "AuthorizationService._build_engine._load_current_policies": {"executed_lines": [550, 551, 554, 556], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 549}, "AuthorizationService._decision_from_cache": {"executed_lines": [575], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 574}, "AuthorizationService._safe_deny": {"executed_lines": [602], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 601}, "AuthorizationService._safe_allow": {"executed_lines": [613], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 612}, "AuthorizationService._fallback_decision": {"executed_lines": [626, 627, 628, 629, 632, 656, 657, 658], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [651, 652], "excluded_lines": [], "start_line": 623}, "AuthorizationService._safe_cache_get": {"executed_lines": [661, 662, 676, 677], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [666, 667, 668, 675], "excluded_lines": [], "start_line": 660}, "AuthorizationService._safe_cache_set": {"executed_lines": [680, 681, 690, 691], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 679}, "AuthorizationService._safe_policy_cache_get": {"executed_lines": [700, 701, 715, 716], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [705, 706, 707, 714], "excluded_lines": [], "start_line": 699}, "AuthorizationService._safe_policy_cache_set": {"executed_lines": [721, 722], "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": [729, 730], "excluded_lines": [], "start_line": 718}, "AuthorizationService._safe_relationship_cache_get": {"executed_lines": [739, 740, 756, 759], "summary": {"covered_lines": 4, "num_statements": 8, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [746, 747, 748, 755], "excluded_lines": [], "start_line": 738}, "AuthorizationService._safe_relationship_cache_set": {"executed_lines": [764, 765], "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": [777, 778], "excluded_lines": [], "start_line": 761}, "AuthorizationService._resource_identity": {"executed_lines": [787, 794, 795], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 786}, "AuthorizationService._safe_audit_write": {"executed_lines": [798, 799], "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": [806, 807], "excluded_lines": [], "start_line": 797}, "": {"executed_lines": [7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 24, 25, 26, 27, 28, 29, 44, 45, 48, 49, 52, 53, 54, 57, 60, 107, 211, 239, 355, 379, 400, 403, 421, 449, 499, 535, 574, 601, 612, 623, 660, 679, 699, 718, 738, 761, 786, 797], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"AuthorizationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 49}, "AuthorizationService": {"executed_lines": [78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 105, 121, 122, 123, 124, 131, 132, 139, 140, 143, 144, 146, 147, 148, 153, 154, 160, 161, 162, 165, 171, 177, 178, 179, 180, 181, 189, 209, 251, 252, 253, 254, 255, 256, 260, 261, 292, 293, 296, 297, 298, 299, 300, 301, 306, 309, 317, 322, 323, 324, 330, 331, 335, 336, 339, 341, 349, 353, 389, 398, 401, 430, 431, 432, 436, 437, 459, 460, 461, 462, 463, 464, 470, 471, 472, 473, 479, 480, 488, 500, 501, 502, 503, 504, 505, 506, 510, 511, 512, 513, 514, 517, 518, 526, 532, 533, 538, 539, 542, 547, 549, 550, 551, 554, 556, 558, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 575, 602, 613, 626, 627, 628, 629, 632, 656, 657, 658, 661, 662, 676, 677, 680, 681, 690, 691, 700, 701, 715, 716, 721, 722, 739, 740, 756, 759, 764, 765, 787, 794, 795, 798, 799], "summary": {"covered_lines": 169, "num_statements": 207, "percent_covered": 81.64251207729468, "percent_covered_display": "82", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 81.64251207729468, "percent_statements_covered_display": "82"}, "missing_lines": [190, 191, 201, 225, 267, 268, 274, 307, 332, 333, 338, 367, 412, 419, 465, 467, 468, 469, 651, 652, 666, 667, 668, 675, 705, 706, 707, 714, 729, 730, 746, 747, 748, 755, 777, 778, 806, 807], "excluded_lines": [], "start_line": 57}, "": {"executed_lines": [7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 24, 25, 26, 27, 28, 29, 44, 45, 48, 49, 52, 53, 54, 57, 60, 107, 211, 239, 355, 379, 400, 403, 421, 449, 499, 535, 574, 601, 612, 623, 660, 679, 699, 718, 738, 761, 786, 797], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/doctor.py": {"executed_lines": [7, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 23, 26, 27, 28, 29, 32, 35, 41, 42, 50, 53, 57, 58, 59, 60, 61, 62, 65, 68, 73, 74, 76, 77, 78, 79, 82, 84, 88, 90, 111, 114, 115, 116, 117, 118, 130, 133, 134, 135, 138, 139, 140, 147, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 171, 172], "summary": {"covered_lines": 70, "num_statements": 78, "percent_covered": 89.74358974358974, "percent_covered_display": "90", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 89.74358974358974, "percent_statements_covered_display": "90"}, "missing_lines": [75, 83, 85, 89, 124, 125, 141, 142], "excluded_lines": [], "functions": {"run_core_doctor": {"executed_lines": [35, 41, 42], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "_check_env": {"executed_lines": [53, 57, 58, 59, 60, 61, 62, 65, 68, 73, 74, 76, 77, 78, 79, 82, 84, 88, 90], "summary": {"covered_lines": 19, "num_statements": 23, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 82.6086956521739, "percent_statements_covered_display": "83"}, "missing_lines": [75, 83, 85, 89], "excluded_lines": [], "start_line": 50}, "_check_database": {"executed_lines": [114, 115, 116, 117, 118], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [124, 125], "excluded_lines": [], "start_line": 111}, "_check_redis": {"executed_lines": [133, 134, 135, 138, 139, 140], "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": [141, 142], "excluded_lines": [], "start_line": 130}, "_check_migrations": {"executed_lines": [150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 171, 172], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 147}, "": {"executed_lines": [7, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 23, 26, 27, 28, 29, 32, 50, 111, 130, 147], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"DoctorCheck": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 23}, "": {"executed_lines": [7, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 23, 26, 27, 28, 29, 32, 35, 41, 42, 50, 53, 57, 58, 59, 60, 61, 62, 65, 68, 73, 74, 76, 77, 78, 79, 82, 84, 88, 90, 111, 114, 115, 116, 117, 118, 130, 133, 134, 135, 138, 139, 140, 147, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 171, 172], "summary": {"covered_lines": 70, "num_statements": 78, "percent_covered": 89.74358974358974, "percent_covered_display": "90", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 89.74358974358974, "percent_statements_covered_display": "90"}, "missing_lines": [75, 83, 85, 89, 124, 125, 141, 142], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/impact_analysis.py": {"executed_lines": [3, 5, 6, 8, 9, 15, 18, 19, 20, 21, 24, 25, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 56, 57, 58, 59, 60, 63, 64, 65, 68, 69, 70, 81, 82, 83, 94, 95, 96, 101, 106, 107, 112, 117, 118, 119, 120, 121, 123, 124, 127, 130, 138, 140, 147, 148, 149, 150, 155, 161], "summary": {"covered_lines": 60, "num_statements": 73, "percent_covered": 82.1917808219178, "percent_covered_display": "82", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 82.1917808219178, "percent_statements_covered_display": "82"}, "missing_lines": [61, 62, 66, 67, 79, 80, 92, 93, 104, 105, 131, 151, 154], "excluded_lines": [], "functions": {"ImpactAnalyzer.__init__": {"executed_lines": [33, 34, 35, 36], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "ImpactAnalyzer.analyze_policy_change": {"executed_lines": [39, 40, 41, 42, 43, 56, 57, 58, 59, 60, 63, 64, 65, 68, 69, 70, 81, 82, 83, 94, 95, 96, 101, 106, 107, 112, 117, 118, 119, 120, 121], "summary": {"covered_lines": 31, "num_statements": 41, "percent_covered": 75.60975609756098, "percent_covered_display": "76", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 75.60975609756098, "percent_statements_covered_display": "76"}, "missing_lines": [61, 62, 66, 67, 79, 80, 92, 93, 104, 105], "excluded_lines": [], "start_line": 38}, "ImpactAnalyzer._candidate_resources": {"executed_lines": [124, 127, 130, 138], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [131], "excluded_lines": [], "start_line": 123}, "ImpactAnalyzer._enrich_user_with_relationships": {"executed_lines": [147, 148, 149, 150, 155, 161], "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": [151, 154], "excluded_lines": [], "start_line": 140}, "": {"executed_lines": [3, 5, 6, 8, 9, 15, 18, 19, 20, 21, 24, 25, 38, 123, 140], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"ImpactResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "ImpactAnalyzer": {"executed_lines": [33, 34, 35, 36, 39, 40, 41, 42, 43, 56, 57, 58, 59, 60, 63, 64, 65, 68, 69, 70, 81, 82, 83, 94, 95, 96, 101, 106, 107, 112, 117, 118, 119, 120, 121, 124, 127, 130, 138, 147, 148, 149, 150, 155, 161], "summary": {"covered_lines": 45, "num_statements": 58, "percent_covered": 77.58620689655173, "percent_covered_display": "78", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 77.58620689655173, "percent_statements_covered_display": "78"}, "missing_lines": [61, 62, 66, 67, 79, 80, 92, 93, 104, 105, 131, 151, 154], "excluded_lines": [], "start_line": 24}, "": {"executed_lines": [3, 5, 6, 8, 9, 15, 18, 19, 20, 21, 24, 25, 38, 123, 140], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/interfaces.py": {"executed_lines": [7, 9, 10, 12, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35, 36, 37, 39, 40, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 81, 82, 85, 86, 89, 90, 93, 94, 95, 96, 97, 98, 101, 102, 105, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, 131, 134, 135, 136, 137, 138, 139, 140, 143, 144, 147, 148, 149, 150, 151, 152, 153, 155, 156, 157, 168, 180, 217, 232, 240, 277, 305, 315, 332, 365, 385, 386, 389, 390, 391, 392, 393, 394, 395, 396, 397, 400, 424, 432, 451], "summary": {"covered_lines": 113, "num_statements": 113, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 238, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 234, 235, 236, 237, 238, 239, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 307, 308, 309, 310, 311, 312, 313, 314, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 426, 427, 428, 429, 430, 431, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 453, 454, 455], "functions": {"RelationshipRecord.to_dict": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 39}, "ACLRecord.to_dict": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 63}, "CachedDecision.from_decision": {"executed_lines": [157], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 156}, "TenantRepository.get_or_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [171], "start_line": 171}, "TenantRepository.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [173], "start_line": 173}, "TenantRepository.bump_policy_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [175], "start_line": 175}, "TenantRepository.bump_revision": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [177], "start_line": 177}, "PolicyRepository.list_current_policies": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [185], "start_line": 183}, "PolicyRepository.list_current_policy_views": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [187], "start_line": 187}, "PolicyRepository.list_current_policy_page": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [195], "start_line": 189}, "PolicyRepository.create_policy_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [208], "start_line": 197}, "PolicyRepository.rollback_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [212], "start_line": 210}, "PolicyRepository.delete_policy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [214], "start_line": 214}, "AuthModelRepository.get_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [220], "start_line": 220}, "AuthModelRepository.upsert_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [229], "start_line": 222}, "UserRepository.get_user_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [235], "start_line": 235}, "UserRepository.list_user_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [237], "start_line": 237}, "RelationshipRepository.list_for_subject": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [245], "start_line": 243}, "RelationshipRepository.list_for_subject_page": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [255], "start_line": 247}, "RelationshipRepository.list_for_object": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [263], "start_line": 257}, "RelationshipRepository.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [274], "start_line": 265}, "AuditRepository.write": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [289], "start_line": 280}, "AuditRepository.list_page": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [302], "start_line": 291}, "PolicyCache.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [308], "start_line": 308}, "PolicyCache.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [310], "start_line": 310}, "PolicyCache.invalidate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [312], "start_line": 312}, "RelationshipCache.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [320], "start_line": 318}, "RelationshipCache.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [329], "start_line": 322}, "ACLRepository.create_acl_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [345], "start_line": 335}, "ACLRepository.list_resource_acl": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [349], "start_line": 347}, "ACLRepository.get_acl_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [351], "start_line": 351}, "ACLRepository.find_matching_acl": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [360], "start_line": 353}, "ACLRepository.delete_acl_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [362], "start_line": 362}, "ACLCache.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [370], "start_line": 368}, "ACLCache.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [380], "start_line": 372}, "ACLCache.invalidate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [382], "start_line": 382}, "AccessIndexCache.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [405], "start_line": 403}, "AccessIndexCache.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [415], "start_line": 407}, "AccessIndexCache.invalidate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [417], "start_line": 417}, "AccessIndexCache.invalidate_tenant": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [419], "start_line": 419}, "AccessIndexCache.invalidate_global": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [421], "start_line": 421}, "RoleBindingRepository.list_user_ids": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [427], "start_line": 427}, "RoleBindingRepository.invalidate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [429], "start_line": 429}, "DecisionCache.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [435], "start_line": 435}, "DecisionCache.set": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [437], "start_line": 437}, "DecisionCache.make_key": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [446], "start_line": 439}, "DecisionCache.bump_namespace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [448], "start_line": 448}, "PolicyEventPublisher.publish_policy_update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [454], "start_line": 454}, "": {"executed_lines": [7, 9, 10, 12, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35, 36, 37, 39, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 81, 82, 85, 86, 89, 90, 93, 94, 95, 96, 97, 98, 101, 102, 105, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, 131, 134, 135, 136, 137, 138, 139, 140, 143, 144, 147, 148, 149, 150, 151, 152, 153, 155, 156, 168, 180, 217, 232, 240, 277, 305, 315, 332, 365, 385, 386, 389, 390, 391, 392, 393, 394, 395, 396, 397, 400, 424, 432, 451], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 192, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [170, 172, 174, 176, 178, 179, 183, 184, 186, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 213, 215, 216, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 234, 236, 238, 239, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 280, 281, 282, 283, 284, 285, 286, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 303, 304, 307, 309, 311, 313, 314, 318, 319, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 350, 352, 353, 354, 355, 356, 357, 358, 359, 361, 363, 364, 368, 369, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 383, 384, 403, 404, 406, 407, 408, 409, 410, 411, 412, 413, 414, 416, 418, 420, 422, 423, 426, 428, 430, 431, 434, 436, 438, 439, 440, 441, 442, 443, 444, 445, 447, 449, 450, 453], "start_line": 1}}, "classes": {"TenantRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "RelationshipRecord": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 30}, "ACLRecord": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 50}, "PolicyRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 82}, "PolicyMutationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 90}, "PolicyListItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 102}, "AuditListItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 114}, "AuthModelRecord": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 131}, "CachedDecision": {"executed_lines": [157], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 144}, "TenantRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [171, 173, 175, 177], "start_line": 168}, "PolicyRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [185, 187, 195, 208, 212, 214], "start_line": 180}, "AuthModelRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [220, 229], "start_line": 217}, "UserRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [235, 237], "start_line": 232}, "RelationshipRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [245, 255, 263, 274], "start_line": 240}, "AuditRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [289, 302], "start_line": 277}, "PolicyCache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [308, 310, 312], "start_line": 305}, "RelationshipCache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [320, 329], "start_line": 315}, "ACLRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [345, 349, 351, 360, 362], "start_line": 332}, "ACLCache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [370, 380, 382], "start_line": 365}, "AccessIndexEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 386}, "AccessIndexCache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 5, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [405, 415, 417, 419, 421], "start_line": 400}, "RoleBindingRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [427, 429], "start_line": 424}, "DecisionCache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "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": [435, 437, 446, 448], "start_line": 432}, "PolicyEventPublisher": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [454], "start_line": 451}, "": {"executed_lines": [7, 9, 10, 12, 19, 20, 23, 24, 25, 26, 29, 30, 33, 34, 35, 36, 37, 39, 49, 50, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 81, 82, 85, 86, 89, 90, 93, 94, 95, 96, 97, 98, 101, 102, 105, 106, 107, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, 131, 134, 135, 136, 137, 138, 139, 140, 143, 144, 147, 148, 149, 150, 151, 152, 153, 155, 156, 168, 180, 217, 232, 240, 277, 305, 315, 332, 365, 385, 386, 389, 390, 391, 392, 393, 394, 395, 396, 397, 400, 424, 432, 451], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 192, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [170, 172, 174, 176, 178, 179, 183, 184, 186, 188, 189, 190, 191, 192, 193, 194, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209, 210, 211, 213, 215, 216, 219, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 234, 236, 238, 239, 243, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 280, 281, 282, 283, 284, 285, 286, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 303, 304, 307, 309, 311, 313, 314, 318, 319, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 350, 352, 353, 354, 355, 356, 357, 358, 359, 361, 363, 364, 368, 369, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 383, 384, 403, 404, 406, 407, 408, 409, 410, 411, 412, 413, 414, 416, 418, 420, 422, 423, 426, 428, 430, 431, 434, 436, 438, 439, 440, 441, 442, 443, 444, 445, 447, 449, 450, 453], "start_line": 1}}}, "keynetra/services/policies.py": {"executed_lines": [3, 5, 6, 7, 8, 16, 19, 22, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 47, 54, 55, 58, 59, 60, 61, 62, 63, 65, 77, 78, 79, 89, 90, 99, 100, 101, 102, 103, 104, 107, 111, 113, 114, 115, 118, 119, 120, 121, 122, 123, 126, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 143, 148, 149, 150, 164], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"PolicyService.__init__": {"executed_lines": [31, 32, 33, 34, 35, 36], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 22}, "PolicyService.list_policies": {"executed_lines": [39, 40, 41, 42, 43, 44, 45], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "PolicyService.list_policies_page": {"executed_lines": [54, 55, 58, 59, 60, 61, 62, 63], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 47}, "PolicyService.create_policy": {"executed_lines": [77, 78, 79, 89, 90, 99, 100, 101, 102, 103, 104, 107, 111], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 65}, "PolicyService.rollback_policy": {"executed_lines": [114, 115, 118, 119, 120, 121, 122, 123, 126, 130], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 113}, "PolicyService.delete_policy": {"executed_lines": [133, 134, 135, 136, 137, 138, 139, 140, 143], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 132}, "PolicyService._compile_and_store": {"executed_lines": [149, 150, 164], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 148}, "": {"executed_lines": [3, 5, 6, 7, 8, 16, 19, 22, 38, 47, 65, 113, 132, 148], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PolicyService": {"executed_lines": [31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 45, 54, 55, 58, 59, 60, 61, 62, 63, 77, 78, 79, 89, 90, 99, 100, 101, 102, 103, 104, 107, 111, 114, 115, 118, 119, 120, 121, 122, 123, 126, 130, 133, 134, 135, 136, 137, 138, 139, 140, 143, 149, 150, 164], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [3, 5, 6, 7, 8, 16, 19, 22, 38, 47, 65, 113, 132, 148], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/policy_dsl.py": {"executed_lines": [1, 3, 4, 6, 7, 12, 23, 28, 29, 31, 32, 33, 34, 35, 36, 40, 43, 44, 47, 48, 50, 53, 54, 56], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 2, "percent_statements_covered": 82.75862068965517, "percent_statements_covered_display": "83"}, "missing_lines": [38, 41, 45, 49, 51], "excluded_lines": [8, 9], "functions": {"dsl_to_policy": {"executed_lines": [23, 28, 29, 31, 32, 33, 34, 35, 36, 40, 43, 44, 47, 48, 50, 53, 54, 56], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 78.26086956521739, "percent_statements_covered_display": "78"}, "missing_lines": [38, 41, 45, 49, 51], "excluded_lines": [], "start_line": 12}, "": {"executed_lines": [1, 3, 4, 6, 7, 12], "summary": {"covered_lines": 6, "num_statements": 6, "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": [8, 9], "start_line": 1}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 12, 23, 28, 29, 31, 32, 33, 34, 35, 36, 40, 43, 44, 47, 48, 50, 53, 54, 56], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 2, "percent_statements_covered": 82.75862068965517, "percent_statements_covered_display": "83"}, "missing_lines": [38, 41, 45, 49, 51], "excluded_lines": [8, 9], "start_line": 1}}}, "keynetra/services/policy_lint.py": {"executed_lines": [3, 5, 6, 7, 9, 10, 12, 13, 16, 17, 18, 21, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 37, 38, 39, 40, 42, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 75], "summary": {"covered_lines": 45, "num_statements": 48, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.75, "percent_statements_covered_display": "94"}, "missing_lines": [66, 67, 71], "excluded_lines": [], "functions": {"PolicyLintService.__init__": {"executed_lines": [25, 26], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 24}, "PolicyLintService.lint": {"executed_lines": [29, 30, 31, 33, 34, 35], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 28}, "PolicyLintService._serialize_conditions": {"executed_lines": [39, 40], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 38}, "PolicyLintService._collect_unused_role_warnings": {"executed_lines": [48, 49, 50, 51, 52, 53, 54], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "PolicyLintService._collect_duplicate_warnings": {"executed_lines": [57, 58, 59, 60, 61, 62, 63, 64, 65, 75], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 76.92307692307692, "percent_statements_covered_display": "77"}, "missing_lines": [66, 67, 71], "excluded_lines": [], "start_line": 56}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 12, 13, 16, 17, 18, 21, 24, 28, 37, 38, 42, 56], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"PolicyLintWarning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 17}, "PolicyLintService": {"executed_lines": [25, 26, 29, 30, 31, 33, 34, 35, 39, 40, 48, 49, 50, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 75], "summary": {"covered_lines": 27, "num_statements": 30, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [66, 67, 71], "excluded_lines": [], "start_line": 21}, "": {"executed_lines": [3, 5, 6, 7, 9, 10, 12, 13, 16, 17, 18, 21, 24, 28, 37, 38, 42, 56], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/policy_simulator.py": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 28, 29, 30, 32, 42, 43, 50, 60, 61, 62, 74, 75], "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": {"PolicySimulator.__init__": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 21}, "PolicySimulator.simulate_policy_change": {"executed_lines": [42, 43, 50, 60, 61, 62, 74, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 32}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 32], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SimulationResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "PolicySimulator": {"executed_lines": [28, 29, 30, 42, 43, 50, 60, 61, 62, 74, 75], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 20}, "": {"executed_lines": [3, 5, 6, 8, 9, 10, 11, 14, 15, 16, 17, 20, 21, 32], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/policy_testing.py": {"executed_lines": [9, 11, 12, 13, 15, 16, 18, 19, 24, 25, 28, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 54, 57, 58, 61, 62, 63, 65, 68, 71, 72, 75, 78, 79, 80, 81, 82, 93, 96, 99, 100, 103, 104, 105, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 124, 126, 127, 128, 130, 131, 133, 142, 143, 145, 146, 147, 148, 150, 152, 155, 156, 157, 158, 159, 161, 163, 165, 168, 180, 181, 182], "summary": {"covered_lines": 89, "num_statements": 107, "percent_covered": 83.17757009345794, "percent_covered_display": "83", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 83.17757009345794, "percent_statements_covered_display": "83"}, "missing_lines": [59, 64, 66, 106, 119, 123, 125, 129, 132, 144, 149, 151, 153, 160, 162, 164, 166, 183], "excluded_lines": [20, 21], "functions": {"parse_policy_test_suite": {"executed_lines": [57, 58, 61, 62, 63, 65, 68, 71, 72], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 75.0, "percent_statements_covered_display": "75"}, "missing_lines": [59, 64, 66], "excluded_lines": [], "start_line": 54}, "run_policy_test_suite": {"executed_lines": [78, 79, 80, 81, 82, 93], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "validate_policy_test_suite": {"executed_lines": [99, 100], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 96}, "_load_document": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [106], "excluded_lines": [], "start_line": 103}, "_parse_policy_entry": {"executed_lines": [110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 124, 126, 127, 128, 130, 131, 133], "summary": {"covered_lines": 19, "num_statements": 24, "percent_covered": 79.16666666666667, "percent_covered_display": "79", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 79.16666666666667, "percent_statements_covered_display": "79"}, "missing_lines": [119, 123, 125, 129, 132], "excluded_lines": [], "start_line": 109}, "_parse_test_case": {"executed_lines": [143, 145, 146, 147, 148, 150, 152, 155, 156, 157, 158, 159, 161, 163, 165, 168], "summary": {"covered_lines": 16, "num_statements": 24, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [144, 149, 151, 153, 160, 162, 164, 166], "excluded_lines": [], "start_line": 142}, "_dump_document": {"executed_lines": [181, 182], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [183], "excluded_lines": [], "start_line": 180}, "": {"executed_lines": [9, 11, 12, 13, 15, 16, 18, 19, 24, 25, 28, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 54, 75, 96, 103, 109, 142, 180], "summary": {"covered_lines": 33, "num_statements": 33, "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": [20, 21], "start_line": 1}}, "classes": {"PolicyTestCase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "PolicyTestSuite": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "PolicyTestResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 42}, "": {"executed_lines": [9, 11, 12, 13, 15, 16, 18, 19, 24, 25, 28, 29, 30, 33, 34, 37, 38, 41, 42, 45, 46, 47, 48, 49, 50, 51, 54, 57, 58, 61, 62, 63, 65, 68, 71, 72, 75, 78, 79, 80, 81, 82, 93, 96, 99, 100, 103, 104, 105, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 124, 126, 127, 128, 130, 131, 133, 142, 143, 145, 146, 147, 148, 150, 152, 155, 156, 157, 158, 159, 161, 163, 165, 168, 180, 181, 182], "summary": {"covered_lines": 89, "num_statements": 107, "percent_covered": 83.17757009345794, "percent_covered_display": "83", "missing_lines": 18, "excluded_lines": 2, "percent_statements_covered": 83.17757009345794, "percent_statements_covered_display": "83"}, "missing_lines": [59, 64, 66, 106, 119, 123, 125, 129, 132, 144, 149, 151, 153, 160, 162, 164, 166, 183], "excluded_lines": [20, 21], "start_line": 1}}}, "keynetra/services/relationships.py": {"executed_lines": [3, 5, 12, 15, 18, 27, 28, 29, 30, 31, 32, 34, 37, 38, 41, 42, 43, 48, 54, 56, 65, 66, 73, 75, 85, 86, 94, 97, 98, 99, 100, 101], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"RelationshipService.__init__": {"executed_lines": [27, 28, 29, 30, 31, 32], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 18}, "RelationshipService.list_relationships": {"executed_lines": [37, 38, 41, 42, 43, 48, 54], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 34}, "RelationshipService.list_relationships_page": {"executed_lines": [65, 66, 73], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 56}, "RelationshipService.create_relationship": {"executed_lines": [85, 86, 94, 97, 98, 99, 100, 101], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 75}, "": {"executed_lines": [3, 5, 12, 15, 18, 34, 56, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RelationshipService": {"executed_lines": [27, 28, 29, 30, 31, 32, 37, 38, 41, 42, 43, 48, 54, 65, 66, 73, 85, 86, 94, 97, 98, 99, 100, 101], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "": {"executed_lines": [3, 5, 12, 15, 18, 34, 56, 75], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/resilience.py": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 13, 16, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "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": {"with_timeout": {"executed_lines": [17, 18, 19, 20, 21, 22], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 16}, "retry": {"executed_lines": [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 13, 16, 25], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"": {"executed_lines": [3, 5, 6, 7, 8, 9, 11, 13, 16, 17, 18, 19, 20, 21, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/revisions.py": {"executed_lines": [3, 5, 6, 9, 12, 13, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28], "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": [], "functions": {"RevisionService.__init__": {"executed_lines": [13], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 12}, "RevisionService.get_revision": {"executed_lines": [16, 17], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 15}, "RevisionService.bump_revision": {"executed_lines": [20, 21, 22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 19}, "": {"executed_lines": [3, 5, 6, 9, 12, 15, 19], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"RevisionService": {"executed_lines": [13, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 9}, "": {"executed_lines": [3, 5, 6, 9, 12, 15, 19], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}}, "keynetra/services/seeding.py": {"executed_lines": [3, 5, 7, 8, 10, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 45, 46, 47, 49, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 88, 101, 102, 112, 114, 115, 125, 126, 137, 183, 193, 202, 203, 205, 206, 207, 208, 220], "summary": {"covered_lines": 71, "num_statements": 94, "percent_covered": 75.53191489361703, "percent_covered_display": "76", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 75.53191489361703, "percent_statements_covered_display": "76"}, "missing_lines": [50, 138, 139, 140, 142, 143, 144, 154, 155, 157, 158, 160, 161, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180], "excluded_lines": [], "functions": {"seed_demo_data": {"executed_lines": [45, 46, 47, 49, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 88, 101, 102, 112, 114, 115, 125, 126], "summary": {"covered_lines": 42, "num_statements": 43, "percent_covered": 97.67441860465117, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.67441860465117, "percent_statements_covered_display": "98"}, "missing_lines": [50], "excluded_lines": [], "start_line": 35}, "_clear_sample_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [138, 139, 140, 142, 143, 144, 154, 155, 157, 158, 160, 161, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180], "excluded_lines": [], "start_line": 137}, "_ensure_policy": {"executed_lines": [193, 202, 203, 205, 206, 207, 208, 220], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 183}, "": {"executed_lines": [3, 5, 7, 8, 10, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 137, 183], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 1}}, "classes": {"SeedSummary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "start_line": 25}, "": {"executed_lines": [3, 5, 7, 8, 10, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 45, 46, 47, 49, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 66, 67, 68, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 88, 101, 102, 112, 114, 115, 125, 126, 137, 183, 193, 202, 203, 205, 206, 207, 208, 220], "summary": {"covered_lines": 71, "num_statements": 94, "percent_covered": 75.53191489361703, "percent_covered_display": "76", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 75.53191489361703, "percent_statements_covered_display": "76"}, "missing_lines": [50, 138, 139, 140, 142, 143, 144, 154, 155, 157, 158, 160, 161, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180], "excluded_lines": [], "start_line": 1}}}, "keynetra/version.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": [], "start_line": 1}}, "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": [], "start_line": 1}}}}, "totals": {"covered_lines": 4791, "num_statements": 5613, "percent_covered": 85.35542490646714, "percent_covered_display": "85", "missing_lines": 822, "excluded_lines": 302, "percent_statements_covered": 85.35542490646714, "percent_statements_covered_display": "85"}}