From 6c3e1c988f3fcb15141b541f264cbb1955c5da01 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 5 Dec 2024 20:15:37 +0000
Subject: [PATCH 01/11] Update coverage data
---
README.md | 38 ++++++++++++++++++++++++++++++++++++++
badge.svg | 1 +
data.json | 1 +
endpoint.json | 1 +
4 files changed, 41 insertions(+)
create mode 100644 README.md
create mode 100644 badge.svg
create mode 100644 data.json
create mode 100644 endpoint.json
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..037dfe6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+# Repository Coverage
+
+
+
+| Name | Stmts | Miss | Cover | Missing |
+|---------------------------------- | -------: | -------: | -------: | --------: |
+| annotated\_logger/\_\_init\_\_.py | 313 | 0 | 100% | |
+| annotated\_logger/filter.py | 31 | 0 | 100% | |
+| annotated\_logger/mocks.py | 124 | 0 | 100% | |
+| annotated\_logger/plugins.py | 92 | 0 | 100% | |
+| example/\_\_init\_\_.py | 0 | 0 | 100% | |
+| example/actions.py | 19 | 0 | 100% | |
+| example/api.py | 40 | 0 | 100% | |
+| example/calculator.py | 106 | 0 | 100% | |
+| example/default.py | 53 | 0 | 100% | |
+| example/invalid\_order.py | 5 | 0 | 100% | |
+| example/logging\_config.py | 37 | 0 | 100% | |
+| **TOTAL** | **820** | **0** | **100%** | |
+
+
+## Setup coverage badge
+
+Below are examples of the badges you can use in your main branch `README` file.
+
+### Direct image
+
+[](https://github.com/github/annotated-logger/tree/python-coverage-comment-action-data)
+
+This is the one to use if your repository is private or if you don't want to customize anything.
+
+
+
+## What is that?
+
+This branch is part of the
+[python-coverage-comment-action](https://github.com/marketplace/actions/python-coverage-comment)
+GitHub Action. All the files in this branch are automatically generated and may be
+overwritten at any moment.
\ No newline at end of file
diff --git a/badge.svg b/badge.svg
new file mode 100644
index 0000000..5bb55be
--- /dev/null
+++ b/badge.svg
@@ -0,0 +1 @@
+Coverage: 100% Coverage Coverage 100% 100%
\ No newline at end of file
diff --git a/data.json b/data.json
new file mode 100644
index 0000000..cba97d2
--- /dev/null
+++ b/data.json
@@ -0,0 +1 @@
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-05T20:15:35.623649", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/endpoint.json b/endpoint.json
new file mode 100644
index 0000000..2c66a68
--- /dev/null
+++ b/endpoint.json
@@ -0,0 +1 @@
+{"schemaVersion": 1, "label": "Coverage", "message": "100%", "color": "brightgreen"}
\ No newline at end of file
From 1257f93a10c075c7cccf660762e180c359ecf05a Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 21:45:45 +0000
Subject: [PATCH 02/11] Update coverage data
---
README.md | 15 +-
data.json | 2 +-
htmlcov/class_index.html | 332 ++++++
htmlcov/coverage_html_cb_6fb7b396.js | 733 ++++++++++++
htmlcov/favicon_32_cb_58284776.png | Bin 0 -> 1732 bytes
htmlcov/function_index.html | 948 +++++++++++++++
htmlcov/index.html | 175 +++
htmlcov/keybd_closed_cb_ce680311.png | Bin 0 -> 9004 bytes
htmlcov/status.json | 1 +
htmlcov/style_cb_8e611ae1.css | 337 ++++++
htmlcov/z_70983d692f648185_actions_py.html | 145 +++
htmlcov/z_70983d692f648185_api_py.html | 168 +++
htmlcov/z_70983d692f648185_calculator_py.html | 329 +++++
htmlcov/z_70983d692f648185_default_py.html | 208 ++++
.../z_70983d692f648185_invalid_order_py.html | 110 ++
.../z_70983d692f648185_logging_config_py.html | 324 +++++
htmlcov/z_beb44c9891d1179a___init___py.html | 1058 +++++++++++++++++
htmlcov/z_beb44c9891d1179a_filter_py.html | 155 +++
htmlcov/z_beb44c9891d1179a_mocks_py.html | 350 ++++++
htmlcov/z_beb44c9891d1179a_plugins_py.html | 305 +++++
20 files changed, 5692 insertions(+), 3 deletions(-)
create mode 100644 htmlcov/class_index.html
create mode 100644 htmlcov/coverage_html_cb_6fb7b396.js
create mode 100644 htmlcov/favicon_32_cb_58284776.png
create mode 100644 htmlcov/function_index.html
create mode 100644 htmlcov/index.html
create mode 100644 htmlcov/keybd_closed_cb_ce680311.png
create mode 100644 htmlcov/status.json
create mode 100644 htmlcov/style_cb_8e611ae1.css
create mode 100644 htmlcov/z_70983d692f648185_actions_py.html
create mode 100644 htmlcov/z_70983d692f648185_api_py.html
create mode 100644 htmlcov/z_70983d692f648185_calculator_py.html
create mode 100644 htmlcov/z_70983d692f648185_default_py.html
create mode 100644 htmlcov/z_70983d692f648185_invalid_order_py.html
create mode 100644 htmlcov/z_70983d692f648185_logging_config_py.html
create mode 100644 htmlcov/z_beb44c9891d1179a___init___py.html
create mode 100644 htmlcov/z_beb44c9891d1179a_filter_py.html
create mode 100644 htmlcov/z_beb44c9891d1179a_mocks_py.html
create mode 100644 htmlcov/z_beb44c9891d1179a_plugins_py.html
diff --git a/README.md b/README.md
index 037dfe6..16bf818 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Repository Coverage
-
+[Full report](https://htmlpreview.github.io/?https://github.com/github/annotated-logger/blob/python-coverage-comment-action-data/htmlcov/index.html)
| Name | Stmts | Miss | Cover | Missing |
|---------------------------------- | -------: | -------: | -------: | --------: |
@@ -24,11 +24,22 @@ Below are examples of the badges you can use in your main branch `README` file.
### Direct image
-[](https://github.com/github/annotated-logger/tree/python-coverage-comment-action-data)
+[](https://htmlpreview.github.io/?https://github.com/github/annotated-logger/blob/python-coverage-comment-action-data/htmlcov/index.html)
This is the one to use if your repository is private or if you don't want to customize anything.
+### [Shields.io](https://shields.io) Json Endpoint
+
+[](https://htmlpreview.github.io/?https://github.com/github/annotated-logger/blob/python-coverage-comment-action-data/htmlcov/index.html)
+
+Using this one will allow you to [customize](https://shields.io/endpoint) the look of your badge.
+It won't work with private repositories. It won't be refreshed more than once per five minutes.
+
+### [Shields.io](https://shields.io) Dynamic Badge
+
+[](https://htmlpreview.github.io/?https://github.com/github/annotated-logger/blob/python-coverage-comment-action-data/htmlcov/index.html)
+This one will always be the same color. It won't work for private repos. I'm not even sure why we included it.
## What is that?
diff --git a/data.json b/data.json
index cba97d2..61fdc6c 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-05T20:15:35.623649", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T21:45:44.542119", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
new file mode 100644
index 0000000..b49b2f7
--- /dev/null
+++ b/htmlcov/class_index.html
@@ -0,0 +1,332 @@
+
+
+
+
+ Coverage report
+
+
+
+
+
+
+
+
+
+ No items found using the specified filter.
+
+ 3 empty classes skipped.
+
+
+
+
diff --git a/htmlcov/coverage_html_cb_6fb7b396.js b/htmlcov/coverage_html_cb_6fb7b396.js
new file mode 100644
index 0000000..1face13
--- /dev/null
+++ b/htmlcov/coverage_html_cb_6fb7b396.js
@@ -0,0 +1,733 @@
+// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+// For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
+
+// Coverage.py HTML report browser code.
+/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */
+/*global coverage: true, document, window, $ */
+
+coverage = {};
+
+// General helpers
+function debounce(callback, wait) {
+ let timeoutId = null;
+ return function(...args) {
+ clearTimeout(timeoutId);
+ timeoutId = setTimeout(() => {
+ callback.apply(this, args);
+ }, wait);
+ };
+};
+
+function checkVisible(element) {
+ const rect = element.getBoundingClientRect();
+ const viewBottom = Math.max(document.documentElement.clientHeight, window.innerHeight);
+ const viewTop = 30;
+ return !(rect.bottom < viewTop || rect.top >= viewBottom);
+}
+
+function on_click(sel, fn) {
+ const elt = document.querySelector(sel);
+ if (elt) {
+ elt.addEventListener("click", fn);
+ }
+}
+
+// Helpers for table sorting
+function getCellValue(row, column = 0) {
+ const cell = row.cells[column] // nosemgrep: eslint.detect-object-injection
+ if (cell.childElementCount == 1) {
+ var child = cell.firstElementChild;
+ if (child.tagName === "A") {
+ child = child.firstElementChild;
+ }
+ if (child instanceof HTMLDataElement && child.value) {
+ return child.value;
+ }
+ }
+ return cell.innerText || cell.textContent;
+}
+
+function rowComparator(rowA, rowB, column = 0) {
+ let valueA = getCellValue(rowA, column);
+ let valueB = getCellValue(rowB, column);
+ if (!isNaN(valueA) && !isNaN(valueB)) {
+ return valueA - valueB;
+ }
+ return valueA.localeCompare(valueB, undefined, {numeric: true});
+}
+
+function sortColumn(th) {
+ // Get the current sorting direction of the selected header,
+ // clear state on other headers and then set the new sorting direction.
+ const currentSortOrder = th.getAttribute("aria-sort");
+ [...th.parentElement.cells].forEach(header => header.setAttribute("aria-sort", "none"));
+ var direction;
+ if (currentSortOrder === "none") {
+ direction = th.dataset.defaultSortOrder || "ascending";
+ }
+ else if (currentSortOrder === "ascending") {
+ direction = "descending";
+ }
+ else {
+ direction = "ascending";
+ }
+ th.setAttribute("aria-sort", direction);
+
+ const column = [...th.parentElement.cells].indexOf(th)
+
+ // Sort all rows and afterwards append them in order to move them in the DOM.
+ Array.from(th.closest("table").querySelectorAll("tbody tr"))
+ .sort((rowA, rowB) => rowComparator(rowA, rowB, column) * (direction === "ascending" ? 1 : -1))
+ .forEach(tr => tr.parentElement.appendChild(tr));
+
+ // Save the sort order for next time.
+ if (th.id !== "region") {
+ let th_id = "file"; // Sort by file if we don't have a column id
+ let current_direction = direction;
+ const stored_list = localStorage.getItem(coverage.INDEX_SORT_STORAGE);
+ if (stored_list) {
+ ({th_id, direction} = JSON.parse(stored_list))
+ }
+ localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({
+ "th_id": th.id,
+ "direction": current_direction
+ }));
+ if (th.id !== th_id || document.getElementById("region")) {
+ // Sort column has changed, unset sorting by function or class.
+ localStorage.setItem(coverage.SORTED_BY_REGION, JSON.stringify({
+ "by_region": false,
+ "region_direction": current_direction
+ }));
+ }
+ }
+ else {
+ // Sort column has changed to by function or class, remember that.
+ localStorage.setItem(coverage.SORTED_BY_REGION, JSON.stringify({
+ "by_region": true,
+ "region_direction": direction
+ }));
+ }
+}
+
+// Find all the elements with data-shortcut attribute, and use them to assign a shortcut key.
+coverage.assign_shortkeys = function () {
+ document.querySelectorAll("[data-shortcut]").forEach(element => {
+ document.addEventListener("keypress", event => {
+ if (event.target.tagName.toLowerCase() === "input") {
+ return; // ignore keypress from search filter
+ }
+ if (event.key === element.dataset.shortcut) {
+ element.click();
+ }
+ });
+ });
+};
+
+// Create the events for the filter box.
+coverage.wire_up_filter = function () {
+ // Populate the filter and hide100 inputs if there are saved values for them.
+ const saved_filter_value = localStorage.getItem(coverage.FILTER_STORAGE);
+ if (saved_filter_value) {
+ document.getElementById("filter").value = saved_filter_value;
+ }
+ const saved_hide100_value = localStorage.getItem(coverage.HIDE100_STORAGE);
+ if (saved_hide100_value) {
+ document.getElementById("hide100").checked = JSON.parse(saved_hide100_value);
+ }
+
+ // Cache elements.
+ const table = document.querySelector("table.index");
+ const table_body_rows = table.querySelectorAll("tbody tr");
+ const no_rows = document.getElementById("no_rows");
+
+ // Observe filter keyevents.
+ const filter_handler = (event => {
+ // Keep running total of each metric, first index contains number of shown rows
+ const totals = new Array(table.rows[0].cells.length).fill(0);
+ // Accumulate the percentage as fraction
+ totals[totals.length - 1] = { "numer": 0, "denom": 0 }; // nosemgrep: eslint.detect-object-injection
+
+ var text = document.getElementById("filter").value;
+ // Store filter value
+ localStorage.setItem(coverage.FILTER_STORAGE, text);
+ const casefold = (text === text.toLowerCase());
+ const hide100 = document.getElementById("hide100").checked;
+ // Store hide value.
+ localStorage.setItem(coverage.HIDE100_STORAGE, JSON.stringify(hide100));
+
+ // Hide / show elements.
+ table_body_rows.forEach(row => {
+ var show = false;
+ // Check the text filter.
+ for (let column = 0; column < totals.length; column++) {
+ cell = row.cells[column];
+ if (cell.classList.contains("name")) {
+ var celltext = cell.textContent;
+ if (casefold) {
+ celltext = celltext.toLowerCase();
+ }
+ if (celltext.includes(text)) {
+ show = true;
+ }
+ }
+ }
+
+ // Check the "hide covered" filter.
+ if (show && hide100) {
+ const [numer, denom] = row.cells[row.cells.length - 1].dataset.ratio.split(" ");
+ show = (numer !== denom);
+ }
+
+ if (!show) {
+ // hide
+ row.classList.add("hidden");
+ return;
+ }
+
+ // show
+ row.classList.remove("hidden");
+ totals[0]++;
+
+ for (let column = 0; column < totals.length; column++) {
+ // Accumulate dynamic totals
+ cell = row.cells[column] // nosemgrep: eslint.detect-object-injection
+ if (cell.classList.contains("name")) {
+ continue;
+ }
+ if (column === totals.length - 1) {
+ // Last column contains percentage
+ const [numer, denom] = cell.dataset.ratio.split(" ");
+ totals[column]["numer"] += parseInt(numer, 10); // nosemgrep: eslint.detect-object-injection
+ totals[column]["denom"] += parseInt(denom, 10); // nosemgrep: eslint.detect-object-injection
+ }
+ else {
+ totals[column] += parseInt(cell.textContent, 10); // nosemgrep: eslint.detect-object-injection
+ }
+ }
+ });
+
+ // Show placeholder if no rows will be displayed.
+ if (!totals[0]) {
+ // Show placeholder, hide table.
+ no_rows.style.display = "block";
+ table.style.display = "none";
+ return;
+ }
+
+ // Hide placeholder, show table.
+ no_rows.style.display = null;
+ table.style.display = null;
+
+ const footer = table.tFoot.rows[0];
+ // Calculate new dynamic sum values based on visible rows.
+ for (let column = 0; column < totals.length; column++) {
+ // Get footer cell element.
+ const cell = footer.cells[column]; // nosemgrep: eslint.detect-object-injection
+ if (cell.classList.contains("name")) {
+ continue;
+ }
+
+ // Set value into dynamic footer cell element.
+ if (column === totals.length - 1) {
+ // Percentage column uses the numerator and denominator,
+ // and adapts to the number of decimal places.
+ const match = /\.([0-9]+)/.exec(cell.textContent);
+ const places = match ? match[1].length : 0;
+ const { numer, denom } = totals[column]; // nosemgrep: eslint.detect-object-injection
+ cell.dataset.ratio = `${numer} ${denom}`;
+ // Check denom to prevent NaN if filtered files contain no statements
+ cell.textContent = denom
+ ? `${(numer * 100 / denom).toFixed(places)}%`
+ : `${(100).toFixed(places)}%`;
+ }
+ else {
+ cell.textContent = totals[column]; // nosemgrep: eslint.detect-object-injection
+ }
+ }
+ });
+
+ document.getElementById("filter").addEventListener("input", debounce(filter_handler));
+ document.getElementById("hide100").addEventListener("input", debounce(filter_handler));
+
+ // Trigger change event on setup, to force filter on page refresh
+ // (filter value may still be present).
+ document.getElementById("filter").dispatchEvent(new Event("input"));
+ document.getElementById("hide100").dispatchEvent(new Event("input"));
+};
+coverage.FILTER_STORAGE = "COVERAGE_FILTER_VALUE";
+coverage.HIDE100_STORAGE = "COVERAGE_HIDE100_VALUE";
+
+// Set up the click-to-sort columns.
+coverage.wire_up_sorting = function () {
+ document.querySelectorAll("[data-sortable] th[aria-sort]").forEach(
+ th => th.addEventListener("click", e => sortColumn(e.target))
+ );
+
+ // Look for a localStorage item containing previous sort settings:
+ let th_id = "file", direction = "ascending";
+ const stored_list = localStorage.getItem(coverage.INDEX_SORT_STORAGE);
+ if (stored_list) {
+ ({th_id, direction} = JSON.parse(stored_list));
+ }
+ let by_region = false, region_direction = "ascending";
+ const sorted_by_region = localStorage.getItem(coverage.SORTED_BY_REGION);
+ if (sorted_by_region) {
+ ({
+ by_region,
+ region_direction
+ } = JSON.parse(sorted_by_region));
+ }
+
+ const region_id = "region";
+ if (by_region && document.getElementById(region_id)) {
+ direction = region_direction;
+ }
+ // If we are in a page that has a column with id of "region", sort on
+ // it if the last sort was by function or class.
+ let th;
+ if (document.getElementById(region_id)) {
+ th = document.getElementById(by_region ? region_id : th_id);
+ }
+ else {
+ th = document.getElementById(th_id);
+ }
+ th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending");
+ th.click()
+};
+
+coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2";
+coverage.SORTED_BY_REGION = "COVERAGE_SORT_REGION";
+
+// Loaded on index.html
+coverage.index_ready = function () {
+ coverage.assign_shortkeys();
+ coverage.wire_up_filter();
+ coverage.wire_up_sorting();
+
+ on_click(".button_prev_file", coverage.to_prev_file);
+ on_click(".button_next_file", coverage.to_next_file);
+
+ on_click(".button_show_hide_help", coverage.show_hide_help);
+};
+
+// -- pyfile stuff --
+
+coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS";
+
+coverage.pyfile_ready = function () {
+ // If we're directed to a particular line number, highlight the line.
+ var frag = location.hash;
+ if (frag.length > 2 && frag[1] === "t") {
+ document.querySelector(frag).closest(".n").classList.add("highlight");
+ coverage.set_sel(parseInt(frag.substr(2), 10));
+ }
+ else {
+ coverage.set_sel(0);
+ }
+
+ on_click(".button_toggle_run", coverage.toggle_lines);
+ on_click(".button_toggle_mis", coverage.toggle_lines);
+ on_click(".button_toggle_exc", coverage.toggle_lines);
+ on_click(".button_toggle_par", coverage.toggle_lines);
+
+ on_click(".button_next_chunk", coverage.to_next_chunk_nicely);
+ on_click(".button_prev_chunk", coverage.to_prev_chunk_nicely);
+ on_click(".button_top_of_page", coverage.to_top);
+ on_click(".button_first_chunk", coverage.to_first_chunk);
+
+ on_click(".button_prev_file", coverage.to_prev_file);
+ on_click(".button_next_file", coverage.to_next_file);
+ on_click(".button_to_index", coverage.to_index);
+
+ on_click(".button_show_hide_help", coverage.show_hide_help);
+
+ coverage.filters = undefined;
+ try {
+ coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE);
+ } catch(err) {}
+
+ if (coverage.filters) {
+ coverage.filters = JSON.parse(coverage.filters);
+ }
+ else {
+ coverage.filters = {run: false, exc: true, mis: true, par: true};
+ }
+
+ for (cls in coverage.filters) {
+ coverage.set_line_visibilty(cls, coverage.filters[cls]); // nosemgrep: eslint.detect-object-injection
+ }
+
+ coverage.assign_shortkeys();
+ coverage.init_scroll_markers();
+ coverage.wire_up_sticky_header();
+
+ document.querySelectorAll("[id^=ctxs]").forEach(
+ cbox => cbox.addEventListener("click", coverage.expand_contexts)
+ );
+
+ // Rebuild scroll markers when the window height changes.
+ window.addEventListener("resize", coverage.build_scroll_markers);
+};
+
+coverage.toggle_lines = function (event) {
+ const btn = event.target.closest("button");
+ const category = btn.value
+ const show = !btn.classList.contains("show_" + category);
+ coverage.set_line_visibilty(category, show);
+ coverage.build_scroll_markers();
+ coverage.filters[category] = show;
+ try {
+ localStorage.setItem(coverage.LINE_FILTERS_STORAGE, JSON.stringify(coverage.filters));
+ } catch(err) {}
+};
+
+coverage.set_line_visibilty = function (category, should_show) {
+ const cls = "show_" + category;
+ const btn = document.querySelector(".button_toggle_" + category);
+ if (btn) {
+ if (should_show) {
+ document.querySelectorAll("#source ." + category).forEach(e => e.classList.add(cls));
+ btn.classList.add(cls);
+ }
+ else {
+ document.querySelectorAll("#source ." + category).forEach(e => e.classList.remove(cls));
+ btn.classList.remove(cls);
+ }
+ }
+};
+
+// Return the nth line div.
+coverage.line_elt = function (n) {
+ return document.getElementById("t" + n)?.closest("p");
+};
+
+// Set the selection. b and e are line numbers.
+coverage.set_sel = function (b, e) {
+ // The first line selected.
+ coverage.sel_begin = b;
+ // The next line not selected.
+ coverage.sel_end = (e === undefined) ? b+1 : e;
+};
+
+coverage.to_top = function () {
+ coverage.set_sel(0, 1);
+ coverage.scroll_window(0);
+};
+
+coverage.to_first_chunk = function () {
+ coverage.set_sel(0, 1);
+ coverage.to_next_chunk();
+};
+
+coverage.to_prev_file = function () {
+ window.location = document.getElementById("prevFileLink").href;
+}
+
+coverage.to_next_file = function () {
+ window.location = document.getElementById("nextFileLink").href;
+}
+
+coverage.to_index = function () {
+ location.href = document.getElementById("indexLink").href;
+}
+
+coverage.show_hide_help = function () {
+ const helpCheck = document.getElementById("help_panel_state")
+ helpCheck.checked = !helpCheck.checked;
+}
+
+// Return a string indicating what kind of chunk this line belongs to,
+// or null if not a chunk.
+coverage.chunk_indicator = function (line_elt) {
+ const classes = line_elt?.className;
+ if (!classes) {
+ return null;
+ }
+ const match = classes.match(/\bshow_\w+\b/);
+ if (!match) {
+ return null;
+ }
+ return match[0];
+};
+
+coverage.to_next_chunk = function () {
+ const c = coverage;
+
+ // Find the start of the next colored chunk.
+ var probe = c.sel_end;
+ var chunk_indicator, probe_line;
+ while (true) {
+ probe_line = c.line_elt(probe);
+ if (!probe_line) {
+ return;
+ }
+ chunk_indicator = c.chunk_indicator(probe_line);
+ if (chunk_indicator) {
+ break;
+ }
+ probe++;
+ }
+
+ // There's a next chunk, `probe` points to it.
+ var begin = probe;
+
+ // Find the end of this chunk.
+ var next_indicator = chunk_indicator;
+ while (next_indicator === chunk_indicator) {
+ probe++;
+ probe_line = c.line_elt(probe);
+ next_indicator = c.chunk_indicator(probe_line);
+ }
+ c.set_sel(begin, probe);
+ c.show_selection();
+};
+
+coverage.to_prev_chunk = function () {
+ const c = coverage;
+
+ // Find the end of the prev colored chunk.
+ var probe = c.sel_begin-1;
+ var probe_line = c.line_elt(probe);
+ if (!probe_line) {
+ return;
+ }
+ var chunk_indicator = c.chunk_indicator(probe_line);
+ while (probe > 1 && !chunk_indicator) {
+ probe--;
+ probe_line = c.line_elt(probe);
+ if (!probe_line) {
+ return;
+ }
+ chunk_indicator = c.chunk_indicator(probe_line);
+ }
+
+ // There's a prev chunk, `probe` points to its last line.
+ var end = probe+1;
+
+ // Find the beginning of this chunk.
+ var prev_indicator = chunk_indicator;
+ while (prev_indicator === chunk_indicator) {
+ probe--;
+ if (probe <= 0) {
+ return;
+ }
+ probe_line = c.line_elt(probe);
+ prev_indicator = c.chunk_indicator(probe_line);
+ }
+ c.set_sel(probe+1, end);
+ c.show_selection();
+};
+
+// Returns 0, 1, or 2: how many of the two ends of the selection are on
+// the screen right now?
+coverage.selection_ends_on_screen = function () {
+ if (coverage.sel_begin === 0) {
+ return 0;
+ }
+
+ const begin = coverage.line_elt(coverage.sel_begin);
+ const end = coverage.line_elt(coverage.sel_end-1);
+
+ return (
+ (checkVisible(begin) ? 1 : 0)
+ + (checkVisible(end) ? 1 : 0)
+ );
+};
+
+coverage.to_next_chunk_nicely = function () {
+ if (coverage.selection_ends_on_screen() === 0) {
+ // The selection is entirely off the screen:
+ // Set the top line on the screen as selection.
+
+ // This will select the top-left of the viewport
+ // As this is most likely the span with the line number we take the parent
+ const line = document.elementFromPoint(0, 0).parentElement;
+ if (line.parentElement !== document.getElementById("source")) {
+ // The element is not a source line but the header or similar
+ coverage.select_line_or_chunk(1);
+ }
+ else {
+ // We extract the line number from the id
+ coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10));
+ }
+ }
+ coverage.to_next_chunk();
+};
+
+coverage.to_prev_chunk_nicely = function () {
+ if (coverage.selection_ends_on_screen() === 0) {
+ // The selection is entirely off the screen:
+ // Set the lowest line on the screen as selection.
+
+ // This will select the bottom-left of the viewport
+ // As this is most likely the span with the line number we take the parent
+ const line = document.elementFromPoint(document.documentElement.clientHeight-1, 0).parentElement;
+ if (line.parentElement !== document.getElementById("source")) {
+ // The element is not a source line but the header or similar
+ coverage.select_line_or_chunk(coverage.lines_len);
+ }
+ else {
+ // We extract the line number from the id
+ coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10));
+ }
+ }
+ coverage.to_prev_chunk();
+};
+
+// Select line number lineno, or if it is in a colored chunk, select the
+// entire chunk
+coverage.select_line_or_chunk = function (lineno) {
+ var c = coverage;
+ var probe_line = c.line_elt(lineno);
+ if (!probe_line) {
+ return;
+ }
+ var the_indicator = c.chunk_indicator(probe_line);
+ if (the_indicator) {
+ // The line is in a highlighted chunk.
+ // Search backward for the first line.
+ var probe = lineno;
+ var indicator = the_indicator;
+ while (probe > 0 && indicator === the_indicator) {
+ probe--;
+ probe_line = c.line_elt(probe);
+ if (!probe_line) {
+ break;
+ }
+ indicator = c.chunk_indicator(probe_line);
+ }
+ var begin = probe + 1;
+
+ // Search forward for the last line.
+ probe = lineno;
+ indicator = the_indicator;
+ while (indicator === the_indicator) {
+ probe++;
+ probe_line = c.line_elt(probe);
+ indicator = c.chunk_indicator(probe_line);
+ }
+
+ coverage.set_sel(begin, probe);
+ }
+ else {
+ coverage.set_sel(lineno);
+ }
+};
+
+coverage.show_selection = function () {
+ // Highlight the lines in the chunk
+ document.querySelectorAll("#source .highlight").forEach(e => e.classList.remove("highlight"));
+ for (let probe = coverage.sel_begin; probe < coverage.sel_end; probe++) {
+ coverage.line_elt(probe).querySelector(".n").classList.add("highlight");
+ }
+
+ coverage.scroll_to_selection();
+};
+
+coverage.scroll_to_selection = function () {
+ // Scroll the page if the chunk isn't fully visible.
+ if (coverage.selection_ends_on_screen() < 2) {
+ const element = coverage.line_elt(coverage.sel_begin);
+ coverage.scroll_window(element.offsetTop - 60);
+ }
+};
+
+coverage.scroll_window = function (to_pos) {
+ window.scroll({top: to_pos, behavior: "smooth"});
+};
+
+coverage.init_scroll_markers = function () {
+ // Init some variables
+ coverage.lines_len = document.querySelectorAll("#source > p").length;
+
+ // Build html
+ coverage.build_scroll_markers();
+};
+
+coverage.build_scroll_markers = function () {
+ const temp_scroll_marker = document.getElementById("scroll_marker")
+ if (temp_scroll_marker) temp_scroll_marker.remove();
+ // Don't build markers if the window has no scroll bar.
+ if (document.body.scrollHeight <= window.innerHeight) {
+ return;
+ }
+
+ const marker_scale = window.innerHeight / document.body.scrollHeight;
+ const line_height = Math.min(Math.max(3, window.innerHeight / coverage.lines_len), 10);
+
+ let previous_line = -99, last_mark, last_top;
+
+ const scroll_marker = document.createElement("div");
+ scroll_marker.id = "scroll_marker";
+ document.getElementById("source").querySelectorAll(
+ "p.show_run, p.show_mis, p.show_exc, p.show_exc, p.show_par"
+ ).forEach(element => {
+ const line_top = Math.floor(element.offsetTop * marker_scale);
+ const line_number = parseInt(element.querySelector(".n a").id.substr(1));
+
+ if (line_number === previous_line + 1) {
+ // If this solid missed block just make previous mark higher.
+ last_mark.style.height = `${line_top + line_height - last_top}px`;
+ }
+ else {
+ // Add colored line in scroll_marker block.
+ last_mark = document.createElement("div");
+ last_mark.id = `m${line_number}`;
+ last_mark.classList.add("marker");
+ last_mark.style.height = `${line_height}px`;
+ last_mark.style.top = `${line_top}px`;
+ scroll_marker.append(last_mark);
+ last_top = line_top;
+ }
+
+ previous_line = line_number;
+ });
+
+ // Append last to prevent layout calculation
+ document.body.append(scroll_marker);
+};
+
+coverage.wire_up_sticky_header = function () {
+ const header = document.querySelector("header");
+ const header_bottom = (
+ header.querySelector(".content h2").getBoundingClientRect().top -
+ header.getBoundingClientRect().top
+ );
+
+ function updateHeader() {
+ if (window.scrollY > header_bottom) {
+ header.classList.add("sticky");
+ }
+ else {
+ header.classList.remove("sticky");
+ }
+ }
+
+ window.addEventListener("scroll", updateHeader);
+ updateHeader();
+};
+
+coverage.expand_contexts = function (e) {
+ var ctxs = e.target.parentNode.querySelector(".ctxs");
+
+ if (!ctxs.classList.contains("expanded")) {
+ var ctxs_text = ctxs.textContent;
+ var width = Number(ctxs_text[0]);
+ ctxs.textContent = "";
+ for (var i = 1; i < ctxs_text.length; i += width) {
+ key = ctxs_text.substring(i, i + width).trim();
+ ctxs.appendChild(document.createTextNode(contexts[key]));
+ ctxs.appendChild(document.createElement("br"));
+ }
+ ctxs.classList.add("expanded");
+ }
+};
+
+document.addEventListener("DOMContentLoaded", () => {
+ if (document.body.classList.contains("indexfile")) {
+ coverage.index_ready();
+ }
+ else {
+ coverage.pyfile_ready();
+ }
+});
diff --git a/htmlcov/favicon_32_cb_58284776.png b/htmlcov/favicon_32_cb_58284776.png
new file mode 100644
index 0000000000000000000000000000000000000000..8649f0475d8d20793b2ec431fe25a186a414cf10
GIT binary patch
literal 1732
zcmV;#20QtQP)K2KOkBOVxIZChq#W-v7@TU%U6P(wycKT1hUJUToW3ke1U1ONa4
z000000000000000bb)GRa9mqwR9|UWHy;^RUrt?IT__Y0JUcxmBP0(51q1>E00030
z|NrOz)aw7%8sJzM<5^g%z7^qE`}_Ot|JUUG(NUkWzR|7K?Zo%@_v-8G-1N%N=D$;;
zw;keH4dGY$`1t4M=HK_s*zm^0#KgqfwWhe3qO_HtvXYvtjgX>;-~C$L`&k>^R)9)7
zdPh2TL^pCnHC#0+_4D)M`p?qp!pq{jO_{8;$fbaflbx`Tn52n|n}8VFRTA1&ugOP<
zPd{uvFjz7t*Vot1&d$l-xWCk}s;sQLO(Bskh6gqNJv>#iB=ypG1e3K!K4yc7!~M
zfj4S*g^zZ7eP$+_Sl07Z646l;%urinP#D8a6TwRtnLIRcI!r4f@bK~9-`~;E(N?Lv
zSEst7s;rcxsi~}{Nsytfz@MtUoR*iFc8!#vvx}Umhm4blk(_~MdVD-@dW&>!Nn~ro
z_E~-ESVQAj6Wmn;(olz(O&_{U2*pZBc1aYjMh>Dq3z|6`jW`RDHV=t3I6yRKJ~LOX
zz_z!!vbVXPqob#=pj3^VMT?x6t(irRmSKsMo1~LLkB&=#j!=M%NP35mfqim$drWb9
zYIb>no_LUwc!r^NkDzs4YHu@=ZHRzrafWDZd1EhEVq=tGX?tK$pIa)DTh#bkvh!J-
z?^%@YS!U*0E8$q$_*aOTQ&)Ra64g>ep;BdcQgvlg8qQHrP*E$;P{-m=A*@axn@$bO
zO-Y4JzS&EAi%YG}N?cn?YFS7ivPY=EMV6~YH;+Xxu|tefLS|Aza)Cg6us#)=JW!uH
zQa?H>d^j+YHCtyjL^LulF*05|F$RG!AX_OHVI&MtA~_@=5_lU|0000rbW%=J06GH4
z^5LD8b8apw8vNh1ua1mF{{Hy)_U`NA;Nacc+sCpuHXa-V{r&yz?c(9#+}oX+NmiRW
z+W-IqK1oDDR5;6GfCDCOP5}iL5fK(cB~ET81`MFgF2kGa9AjhSIk~-E-4&*tPPKdiilQJ11k_J082ZS
z>@TvivP!5ZFG?t@{t+GpR3XR&@*hA_VE1|Lo8@L@)l*h(Z@=?c-NS$Fk&&61IzUU9
z*nPqBM=OBZ-6ka1SJgGAS-Us5EN)r#dUX%>wQZLa2ytPCtMKp)Ob
z*xcu38Z&d5<-NBS)@jRD+*!W*cf-m_wmxDEqBf?czI%3U0J$Xik;lA`jg}VH?(S(V
zE!M3;X2B8w0TnnW&6(8;_Uc)WD;Ms6PKP+s(sFgO!}B!^ES~GDt4qLPxwYB)^7)XA
zZwo9zDy-B0B+jT6V=!=bo(zs_8{eBA78gT9GH$(DVhz;4VAYwz+bOIdZ-PNb|I&rl
z^XG=vFLF)1{&nT2*0vMz#}7^9hXzzf&ZdKlEj{LihP;|;Ywqn35ajP?H?7t|i-Un%
z&&kxee@9B{nwgv1+S-~0)E1{ob1^Wn`F2isurqThKK=3%&;`@{0{!D-
z&CSj80t;uPu&FaJFtSXKH#ajgGj}=sEad7US6jP0|Db@0j)?(5@sf<7`~a9>s;wCa
zm^)spe{uxGFmrJYI9cOh7s$>8Npkt-5EWB1UKc`{W{y5Ce$1+nM9Cr;);=Ju#N^62OSlJMn7omiUgP&ErsYzT~iGxcW
aE(`!K@+CXylaC4j0000
+
+
+
+ Coverage report
+
+
+
+
+
+
+
+
+
+ No items found using the specified filter.
+
+ 27 empty functions skipped.
+
+
+
+
diff --git a/htmlcov/index.html b/htmlcov/index.html
new file mode 100644
index 0000000..c5ecb48
--- /dev/null
+++ b/htmlcov/index.html
@@ -0,0 +1,175 @@
+
+
+
+
+ Coverage report
+
+
+
+
+
+
+
+
+
+ No items found using the specified filter.
+
+ 1 empty file skipped.
+
+
+
+
diff --git a/htmlcov/keybd_closed_cb_ce680311.png b/htmlcov/keybd_closed_cb_ce680311.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba119c47df81ed2bbd27a06988abf700139c4f99
GIT binary patch
literal 9004
zcmeHLc{tSF+aIY=A^R4_poB4tZAN2XC;O7M(inrW3}(h&Q4}dl*&-65$i9^&vW6_#
zcM4g`Qix=GhkBl;=lwnJ@Ap2}^}hc-b6vBXb3XUyzR%~}_c`-Dw+!?&>5p(90RRB>
zXe~7($~PP3eT?=X<@3~Q1w84vX~IoSx~1#~02+TopXK(db;4v6!{+W`RHLkkHO
zo;+s?)puc`+$yOwHv>I$5^8v^F3<|$44HA8AFnFB0cAP|C`p}aSMJK*-CUB{eQ!;K
z-9Ju3OQ+xVPr3P#o4>_lNBT;M+1vgV&B~6!naOGHb-LFA9TkfHv1IFA1Y!Iz!Zl3)
z%c#-^zNWPq7U_}6I7aHSmFWi125RZrNBKyvnV^?64)zviS;E!UD%LaGRl6@zn!3E{
zJ`B$5``cH_3a)t1#6I7d==JeB_IcSU%=I#DrRCBGm8GvCmA=+XHEvC2SIfsNa0(h9
z7P^C4U`W@@`9p>2f^zyb5B=lpc*RZMn-%%IqrxSWQF8{ec3i?-AB(_IVe
z)XgT>Y^u41MwOMFvU=I4?!^#jaS-%bjnx@
zmL44yVEslR_ynm18F!u}Ru#moEn3EE?1=9@$B1Z5aLi5b8{&?V(IAYBzIar!SiY3<
z`l0V)djHtrImy}(!7x-Pmq+njM)JFQ9mx*(C+9a3M)(_SW|lrN=gfxFhStu^zvynS
zm@gl;>d8i8wpUkX42vS3BEzE3-yctH%t0#N%s+6-&_<*Fe7+h=`=FM?DOg1)eGL~~
zQvIFm$D*lqEh07XrXY=jb%hdyP4)`wyMCb$=-z9(lOme9=tirVkb)_GOl2MJn;=Ky
z^0pV1owR7KP-BSxhI@@@+gG0roD-kXE1;!#R7KY1QiUbyDdTElm|ul7{mMdF1%UDJ
z_vp=Vo!TCF?D*?u%
zk~}4!xK2MSQd-QKC0${G=ZRv2x8%8ZqdfR!?Dv=5Mj^8WU)?iH;C?o6rSQy*^YwQb
zf@5V)q=xah#a3UEIBC~N7on(p4jQd4K$|i7k`d8mw|M{Mxapl46Z^X^9U}JgqH#;T
z`CTzafpMD+J-LjzF+3Xau>xM_sXisRj6m-287~i9g|%gHc}v77>n_+p7ZgmJszx!b
zSmL4wV;&*5Z|zaCk`rOYFdOjZLLQr!WSV6AlaqYh_OE)>rYdtx`gk$yAMO=-E1b~J
zIZY6gM*}1UWsJ)TW(pf1=h?lJy_0TFOr|nALGW>$IE1E7z+$`^2WJY+>$$nJo8Rs`
z)xS>AH{N~X3+b=2+8Q_|n(1JoGv55r>TuwBV~MXE&9?3Zw>cIxnOPNs#gh~C4Zo=k
z&!s;5)^6UG>!`?hh0Q|r|Qbm>}pgtOt23Vh!NSibozH$`#LSiYL)HR4bkfEJMa
zBHwC3TaHx|BzD|MXAr>mm&FbZXeEX-=W}Ji&!pji4sO$#0Wk^Q7j%{8#bJPn$C=E%
zPlB}0)@Ti^r_HMJrTMN?9~4LQbIiUiOKBVNm_QjABKY4;zC88yVjvB>ZETNzr%^(~
zI3U&Ont?P`r&4
z#Bp)jcVV_N_{c1_qW}_`dQm)D`NG?h{+S!YOaUgWna4i8SuoLcXAZ|#Jh&GNn7B}3
z?vZ8I{LpmCYT=@6)dLPd@|(;d<08ufov%+V?$mgUYQHYTrc%eA=CDUzK}v|G&9}yJ
z)|g*=+RH1IQ>rvkY9UIam=fkxWDyGIKQ2RU{GqOQjD8nG#sl+$V=?wpzJdT=wlNWr
z1%lw&+;kVs(z?e=YRWRA&jc75rQ~({*TS<(
z8X!j>B}?Bxrrp%wEE7yBefQ?*nM20~+ZoQK(NO_wA`RNhsqVkXHy|sod@mqen=B#@
zmLi=x2*o9rWqTMWoB&qdZph$~qkJJTVNc*8^hU?gH_fY{GYPEBE8Q{j0Y$tvjMv%3
z)j#EyBf^7n)2d8IXDYX2O0S%ZTnGhg4Ss#sEIATKpE_E4TU=GimrD5F6K(%*+T-!o
z?Se7^Vm`$ZKDwq+=~jf?w0qC$Kr&R-;IF#{iLF*8zKu8(=#chRO;>x
zdM;h{i{RLpJgS!B-ueTFs8&4U4+D8|7nP~UZ@P`J;*0sj^#f_WqT#xpA?@qHonGB&
zQ<^;OLtOG1w#)N~&@b0caUL7syAsAxV#R`n>-+eVL9aZwnlklzE>-6!1#!tVA`uNo
z>Gv^P)sohc~g_1YMC;^f(N<{2y5C^;QCEXo;LQ^#$0
zr>jCrdoeXuff!dJ^`#=Wy2Gumo^Qt7BZrI~G+Pyl_kL>is3P0^JlE;Sjm-YfF~I>t
z_KeNpK|5U&F4;v?WSl(jxUWDarfcIcl=-6!8>^S`57!M6;hZea5IFA@)2+*Rt85
zi-MBs_b^DU8LygXXQGkG+86N7<%M|baM(orG*ASffC`p!?@m{qd}IcYmZyi^d}#Q&
zNjk-0@CajpUI-gPm20ERVDO!L8@p`tMJ69FD(ASIkdoLdiRV6h9TPKRz>2WK4upHd
z6OZK33EP?`GoJkXh)S035}uLUO$;TlXwNdMg-WOhLB)7a`-%*a9lFmjf6n+4ZmIHN
z-V@$
z8PXsoR4*`5RwXz=A8|5;aXKtSHFccj%dG7cO~UBJnt)61K>-uPX)`vu{7fcX6_>zZ
zw_2V&Li+7mxbf!f7{Rk&VVyY!UtZywac%g!cH+xh#j$a`uf?XWl<``t`36W;p7=_*
zO6uf~2{sAdkZn=Ts@p0>8N8rzw2ZLS@$ibV-c-QmG@%|3gUUrRxu=e*ekhTa+f?8q
z3$JVGPr9w$VQG~QCq~Y=2ThLIH!T@(>{NihJ6nj*HA_C#Popv)CBa)+UI-bx8u8zfCT^*1|k
z&N9oFYsZEijPn31Yx_yO5pFs>0tOAV=oRx~Wpy5ie&S_449m4R^{LWQMA~}vocV1O
zIf#1ZV85E>tvZE4mz~zn{hs!pkIQM;EvZMimqiPAJu-9P@mId&nb$lsrICS=)zU3~
zn>a#9>}5*3N)9;PTMZ)$`5k}
z?iG}Rwj$>Y*|(D3S3e&fxhaPHma8@vwu(cwdlaCjX+NIK6=$H4U`rfzcWQVOhp{fnzuZhgCCGpw|p
zTi`>cv~xVzdx|^`C0vXdlMwPae3S?>3|7v$e*Bs6-5gS>>FMHk_r2M(ADOV{KV7+6
zA@5Q(mdx%7J}MY}K461iuQ}5GwDGI=Yc&g0MZHu)7gC3{5@QZj6SJl*o0MS2Cl_ia
zyK?9QmC9tJ6yn{EA-erJ4wk$+!E#X(s~9h^HOmQ_|6V_s1)k;%9Q6Niw}SyT?jxl4
z;HYz2$Nj$8Q_*Xo`TWEUx^Q9b+ik@$o39`mlY&P}G8wnjdE+Dlj?uL;$aB$n;x
zWoh-M_u>9}_Ok@d_uidMqz10zJc}RQijPW3Fs&~1am=j*+A$QWTvxf9)6n;n8zTQW
z!Q_J1%apTsJzLF`#^P_#mRv2Ya_keUE7iMSP!ha-WQoo0vZZG?gyR;+4q8F6tL#u<
zRj8Hu5f-p1$J;)4?WpGL{4@HmJ6&tF9A5Tc8Trp>;Y>{^s?Q1&bam}?OjsnKd?|Z82aix26wUOLxbEW~E)|CgJ#)MLf_me#
zv4?F$o@A~Um)6>HlM0=3Bd-vc91EM}D+t6-@!}O%i*&Wl%@#C8X+?5+nv`oPu!!=5
znbL+Fk_#J_%8vOq^FIv~5N(nk03kyo1p@l|1c+rO^zCG3bk2?|%AF;*|4si1XM<`a
z1NY0-8$wv?&129!(g_A1lXR!+pD*1*cF?T~e1d6*G1Fz)jcSaZoKpxtA%FNnKP2jo
zLXn@OR#1z@6zuH%mMB98}-t
zHJqClsZ!G5xMSgIs_=<8sBePXxfoXsuvy`|buON9BX%s-o>OVLA)k3W=wKnw1?so$
zEjm0aS=zu@Xu#;{A)QTjJ$a9_={++ACkRY*sk3jLk&Fu}RxR<-DXR<`5`$VNG*wJE
zidM6VzaQ!M0gbQM98@x@;#0qUS8O)p6mrYwTk*;8J~!ovbY6jon^Ki}uggd3#J5G8
z>awvtF85Y<9yE{Iag}J7O7)1O=ylk^255@XmV5J06-{xaaSNASZoTKKp~$tSxdUI~
zU1RZ&UuW37Ro&_ryj^cSt$Jd&pt|+h!A&dwcr&`S=R5E`=6Tm`+(qGm@$YZ8(8@a$
zXfo@Rwtvm7N3RMmVCb7radAs-@QtCXx^CQ-<)V>QPLZy@jH{#dc4#(y
zV)6Hp{ZMz!|NG8!>i01gZMy)G<8Hf2X7e&LH_gOaajW<<^Xi55@OnlY*|S|*TS8;u_nHbv7lgmmZ+Q<5
zi!*lLCJmdpyzl(L${$C?(pVo|oR%r~x_B_ocPePa_);27^=n4L=`toZ;xdBut9rSv
z?wDQ7j2I3WQBdhz%X7`2YaG_y|wA!7|s?k;A&WNMLMTZEzCaE^d??E&u?f=ejQBR~|<
z)=thyP2(p8r6mt?Ad}tXAP_GvF9|P630I;$1cpQ+Ay7C34hK^ZV3H4kjPV8&NP>G5
zKRDEIBrFl{M#j4mfP0)68&?mqJP1S?2mU0djAGTjDV;wZ?6vplNn~3Hn$nP>%!dMi
zz@bnC7zzi&k&s{QDWkf&zgrVXKUJjY3Gv3bL0}S4h>OdgEJ$Q^&p-VAr3J}^a*+rz
z!jW7(h*+GuCyqcC{MD(Ovj^!{pB^OKUe|uy&bD?CN>KZrf3?v>>l*xSvnQiH-o^ViN$%FRdm9url;%(*jf5H$*S)8;i0xWHdl>$p);nH9v0)YfW?Vz$!
zNCeUbi9`NEg(i^57y=fzM@1o*z*Bf6?QCV>2p9}(BLlYsOCfMjFv1pw1mlo)Py{8v
zppw{MDfEeWN+n>Ne~oI7%9cU}mz0r3!es2gNF0t5jkGipjIo2lz;-e)7}Ul_#!eDv
zw;#>kI>;#-pyfeu3Fsd^2F@6=oh#8r9;A!G0`-mm7%{=S;Ec(bJ=I_`FodKGQVNEY
zmXwr4{9*jpDl%4{ggQZ5Ac
z%wYTdl*!1c5^)%^E78Q&)ma|27c6j(a=)g4sGrp$r{jv>>M2
z6y)E5|Aooe!PSfKzvKA>`a6pfK3=E8vL14ksP&f=>gOP?}rG6ye@9ZR3
zJF*vsh*P$w390i!FV~~_Hv6t2Zl<4VUi|rNja#boFt{%q~xGb
z(2petq9A*_>~B*>?d?Olx^lmYg4)}sH2>G42RE;
literal 0
HcmV?d00001
diff --git a/htmlcov/status.json b/htmlcov/status.json
new file mode 100644
index 0000000..f26bcb1
--- /dev/null
+++ b/htmlcov/status.json
@@ -0,0 +1 @@
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"7b6dce8de02cf55ec901735aafdf2292","files":{"z_beb44c9891d1179a___init___py":{"hash":"aed0c62127a900a681a5da50c59ddbe2","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":313,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"5bc132f4e51702302e6399a78f8dc03b","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/style_cb_8e611ae1.css b/htmlcov/style_cb_8e611ae1.css
new file mode 100644
index 0000000..3cdaf05
--- /dev/null
+++ b/htmlcov/style_cb_8e611ae1.css
@@ -0,0 +1,337 @@
+@charset "UTF-8";
+/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
+/* For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt */
+/* Don't edit this .css file. Edit the .scss file instead! */
+html, body, h1, h2, h3, p, table, td, th { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }
+
+body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1em; background: #fff; color: #000; }
+
+@media (prefers-color-scheme: dark) { body { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { body { color: #eee; } }
+
+html > body { font-size: 16px; }
+
+a:active, a:focus { outline: 2px dashed #007acc; }
+
+p { font-size: .875em; line-height: 1.4em; }
+
+table { border-collapse: collapse; }
+
+td { vertical-align: top; }
+
+table tr.hidden { display: none !important; }
+
+p#no_rows { display: none; font-size: 1.15em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; }
+
+a.nav { text-decoration: none; color: inherit; }
+
+a.nav:hover { text-decoration: underline; color: inherit; }
+
+.hidden { display: none; }
+
+header { background: #f8f8f8; width: 100%; z-index: 2; border-bottom: 1px solid #ccc; }
+
+@media (prefers-color-scheme: dark) { header { background: black; } }
+
+@media (prefers-color-scheme: dark) { header { border-color: #333; } }
+
+header .content { padding: 1rem 3.5rem; }
+
+header h2 { margin-top: .5em; font-size: 1em; }
+
+header h2 a.button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; background: #eee; color: inherit; text-decoration: none; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; }
+
+@media (prefers-color-scheme: dark) { header h2 a.button { background: #333; } }
+
+@media (prefers-color-scheme: dark) { header h2 a.button { border-color: #444; } }
+
+header h2 a.button.current { border: 2px solid; background: #fff; border-color: #999; cursor: default; }
+
+@media (prefers-color-scheme: dark) { header h2 a.button.current { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { header h2 a.button.current { border-color: #777; } }
+
+header p.text { margin: .5em 0 -.5em; color: #666; font-style: italic; }
+
+@media (prefers-color-scheme: dark) { header p.text { color: #aaa; } }
+
+header.sticky { position: fixed; left: 0; right: 0; height: 2.5em; }
+
+header.sticky .text { display: none; }
+
+header.sticky h1, header.sticky h2 { font-size: 1em; margin-top: 0; display: inline-block; }
+
+header.sticky .content { padding: 0.5rem 3.5rem; }
+
+header.sticky .content p { font-size: 1em; }
+
+header.sticky ~ #source { padding-top: 6.5em; }
+
+main { position: relative; z-index: 1; }
+
+footer { margin: 1rem 3.5rem; }
+
+footer .content { padding: 0; color: #666; font-style: italic; }
+
+@media (prefers-color-scheme: dark) { footer .content { color: #aaa; } }
+
+#index { margin: 1rem 0 0 3.5rem; }
+
+h1 { font-size: 1.25em; display: inline-block; }
+
+#filter_container { float: right; margin: 0 2em 0 0; line-height: 1.66em; }
+
+#filter_container #filter { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; }
+
+@media (prefers-color-scheme: dark) { #filter_container #filter { border-color: #444; } }
+
+@media (prefers-color-scheme: dark) { #filter_container #filter { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { #filter_container #filter { color: #eee; } }
+
+#filter_container #filter:focus { border-color: #007acc; }
+
+#filter_container :disabled ~ label { color: #ccc; }
+
+@media (prefers-color-scheme: dark) { #filter_container :disabled ~ label { color: #444; } }
+
+#filter_container label { font-size: .875em; color: #666; }
+
+@media (prefers-color-scheme: dark) { #filter_container label { color: #aaa; } }
+
+header button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; background: #eee; color: inherit; text-decoration: none; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; }
+
+@media (prefers-color-scheme: dark) { header button { background: #333; } }
+
+@media (prefers-color-scheme: dark) { header button { border-color: #444; } }
+
+header button:active, header button:focus { outline: 2px dashed #007acc; }
+
+header button.run { background: #eeffee; }
+
+@media (prefers-color-scheme: dark) { header button.run { background: #373d29; } }
+
+header button.run.show_run { background: #dfd; border: 2px solid #00dd00; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { header button.run.show_run { background: #373d29; } }
+
+header button.mis { background: #ffeeee; }
+
+@media (prefers-color-scheme: dark) { header button.mis { background: #4b1818; } }
+
+header button.mis.show_mis { background: #fdd; border: 2px solid #ff0000; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { header button.mis.show_mis { background: #4b1818; } }
+
+header button.exc { background: #f7f7f7; }
+
+@media (prefers-color-scheme: dark) { header button.exc { background: #333; } }
+
+header button.exc.show_exc { background: #eee; border: 2px solid #808080; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { header button.exc.show_exc { background: #333; } }
+
+header button.par { background: #ffffd5; }
+
+@media (prefers-color-scheme: dark) { header button.par { background: #650; } }
+
+header button.par.show_par { background: #ffa; border: 2px solid #bbbb00; margin: 0 .1em; }
+
+@media (prefers-color-scheme: dark) { header button.par.show_par { background: #650; } }
+
+#help_panel, #source p .annotate.long { display: none; position: absolute; z-index: 999; background: #ffffcc; border: 1px solid #888; border-radius: .2em; color: #333; padding: .25em .5em; }
+
+#source p .annotate.long { white-space: normal; float: right; top: 1.75em; right: 1em; height: auto; }
+
+#help_panel_wrapper { float: right; position: relative; }
+
+#keyboard_icon { margin: 5px; }
+
+#help_panel_state { display: none; }
+
+#help_panel { top: 25px; right: 0; padding: .75em; border: 1px solid #883; color: #333; }
+
+#help_panel .keyhelp p { margin-top: .75em; }
+
+#help_panel .legend { font-style: italic; margin-bottom: 1em; }
+
+.indexfile #help_panel { width: 25em; }
+
+.pyfile #help_panel { width: 18em; }
+
+#help_panel_state:checked ~ #help_panel { display: block; }
+
+kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em .35em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: bold; background: #eee; border-radius: 3px; }
+
+#source { padding: 1em 0 1em 3.5rem; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; }
+
+#source p { position: relative; white-space: pre; }
+
+#source p * { box-sizing: border-box; }
+
+#source p .n { float: left; text-align: right; width: 3.5rem; box-sizing: border-box; margin-left: -3.5rem; padding-right: 1em; color: #999; user-select: none; }
+
+@media (prefers-color-scheme: dark) { #source p .n { color: #777; } }
+
+#source p .n.highlight { background: #ffdd00; }
+
+#source p .n a { scroll-margin-top: 6em; text-decoration: none; color: #999; }
+
+@media (prefers-color-scheme: dark) { #source p .n a { color: #777; } }
+
+#source p .n a:hover { text-decoration: underline; color: #999; }
+
+@media (prefers-color-scheme: dark) { #source p .n a:hover { color: #777; } }
+
+#source p .t { display: inline-block; width: 100%; box-sizing: border-box; margin-left: -.5em; padding-left: 0.3em; border-left: 0.2em solid #fff; }
+
+@media (prefers-color-scheme: dark) { #source p .t { border-color: #1e1e1e; } }
+
+#source p .t:hover { background: #f2f2f2; }
+
+@media (prefers-color-scheme: dark) { #source p .t:hover { background: #282828; } }
+
+#source p .t:hover ~ .r .annotate.long { display: block; }
+
+#source p .t .com { color: #008000; font-style: italic; line-height: 1px; }
+
+@media (prefers-color-scheme: dark) { #source p .t .com { color: #6a9955; } }
+
+#source p .t .key { font-weight: bold; line-height: 1px; }
+
+#source p .t .str { color: #0451a5; }
+
+@media (prefers-color-scheme: dark) { #source p .t .str { color: #9cdcfe; } }
+
+#source p.mis .t { border-left: 0.2em solid #ff0000; }
+
+#source p.mis.show_mis .t { background: #fdd; }
+
+@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t { background: #4b1818; } }
+
+#source p.mis.show_mis .t:hover { background: #f2d2d2; }
+
+@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t:hover { background: #532323; } }
+
+#source p.run .t { border-left: 0.2em solid #00dd00; }
+
+#source p.run.show_run .t { background: #dfd; }
+
+@media (prefers-color-scheme: dark) { #source p.run.show_run .t { background: #373d29; } }
+
+#source p.run.show_run .t:hover { background: #d2f2d2; }
+
+@media (prefers-color-scheme: dark) { #source p.run.show_run .t:hover { background: #404633; } }
+
+#source p.exc .t { border-left: 0.2em solid #808080; }
+
+#source p.exc.show_exc .t { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t { background: #333; } }
+
+#source p.exc.show_exc .t:hover { background: #e2e2e2; }
+
+@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t:hover { background: #3c3c3c; } }
+
+#source p.par .t { border-left: 0.2em solid #bbbb00; }
+
+#source p.par.show_par .t { background: #ffa; }
+
+@media (prefers-color-scheme: dark) { #source p.par.show_par .t { background: #650; } }
+
+#source p.par.show_par .t:hover { background: #f2f2a2; }
+
+@media (prefers-color-scheme: dark) { #source p.par.show_par .t:hover { background: #6d5d0c; } }
+
+#source p .r { position: absolute; top: 0; right: 2.5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; }
+
+#source p .annotate { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; color: #666; padding-right: .5em; }
+
+@media (prefers-color-scheme: dark) { #source p .annotate { color: #ddd; } }
+
+#source p .annotate.short:hover ~ .long { display: block; }
+
+#source p .annotate.long { width: 30em; right: 2.5em; }
+
+#source p input { display: none; }
+
+#source p input ~ .r label.ctx { cursor: pointer; border-radius: .25em; }
+
+#source p input ~ .r label.ctx::before { content: "â–¶ "; }
+
+#source p input ~ .r label.ctx:hover { background: #e8f4ff; color: #666; }
+
+@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { background: #0f3a42; } }
+
+@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { color: #aaa; } }
+
+#source p input:checked ~ .r label.ctx { background: #d0e8ff; color: #666; border-radius: .75em .75em 0 0; padding: 0 .5em; margin: -.25em 0; }
+
+@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { background: #056; } }
+
+@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { color: #aaa; } }
+
+#source p input:checked ~ .r label.ctx::before { content: "â–¼ "; }
+
+#source p input:checked ~ .ctxs { padding: .25em .5em; overflow-y: scroll; max-height: 10.5em; }
+
+#source p label.ctx { color: #999; display: inline-block; padding: 0 .5em; font-size: .8333em; }
+
+@media (prefers-color-scheme: dark) { #source p label.ctx { color: #777; } }
+
+#source p .ctxs { display: block; max-height: 0; overflow-y: hidden; transition: all .2s; padding: 0 .5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; white-space: nowrap; background: #d0e8ff; border-radius: .25em; margin-right: 1.75em; text-align: right; }
+
+@media (prefers-color-scheme: dark) { #source p .ctxs { background: #056; } }
+
+#index { font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875em; }
+
+#index table.index { margin-left: -.5em; }
+
+#index td, #index th { text-align: right; padding: .25em .5em; border-bottom: 1px solid #eee; }
+
+@media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } }
+
+#index td.name, #index th.name { text-align: left; width: auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; min-width: 15em; }
+
+#index th { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-style: italic; color: #333; cursor: pointer; }
+
+@media (prefers-color-scheme: dark) { #index th { color: #ddd; } }
+
+#index th:hover { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #index th:hover { background: #333; } }
+
+#index th .arrows { color: #666; font-size: 85%; font-family: sans-serif; font-style: normal; pointer-events: none; }
+
+#index th[aria-sort="ascending"], #index th[aria-sort="descending"] { white-space: nowrap; background: #eee; padding-left: .5em; }
+
+@media (prefers-color-scheme: dark) { #index th[aria-sort="ascending"], #index th[aria-sort="descending"] { background: #333; } }
+
+#index th[aria-sort="ascending"] .arrows::after { content: " â–²"; }
+
+#index th[aria-sort="descending"] .arrows::after { content: " â–¼"; }
+
+#index td.name { font-size: 1.15em; }
+
+#index td.name a { text-decoration: none; color: inherit; }
+
+#index td.name .no-noun { font-style: italic; }
+
+#index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; }
+
+#index tr.region:hover { background: #eee; }
+
+@media (prefers-color-scheme: dark) { #index tr.region:hover { background: #333; } }
+
+#index tr.region:hover td.name { text-decoration: underline; color: inherit; }
+
+#scroll_marker { position: fixed; z-index: 3; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; }
+
+@media (prefers-color-scheme: dark) { #scroll_marker { background: #1e1e1e; } }
+
+@media (prefers-color-scheme: dark) { #scroll_marker { border-color: #333; } }
+
+#scroll_marker .marker { background: #ccc; position: absolute; min-height: 3px; width: 100%; }
+
+@media (prefers-color-scheme: dark) { #scroll_marker .marker { background: #444; } }
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
new file mode 100644
index 0000000..efb9e27
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -0,0 +1,145 @@
+
+
+
+
+ Coverage for example/actions.py: 100%
+
+
+
+
+
+
+
+ 1 import logging
+ 2 from copy import deepcopy
+ 3
+ 4 from annotated_logger import (
+ 5 DEFAULT_LOGGING_CONFIG ,
+ 6 AnnotatedAdapter ,
+ 7 AnnotatedLogger ,
+ 8 )
+ 9 from annotated_logger . plugins import GitHubActionsPlugin
+ 10
+ 11 actions_plugin = GitHubActionsPlugin ( annotation_level = logging . INFO )
+ 12
+ 13 LOGGING = deepcopy ( DEFAULT_LOGGING_CONFIG )
+ 14
+ 15 # The GitHubActionsPlugin provides a `logging_config` method that returns some
+ 16 # defaults that will annotate at the info (notice) and above.
+ 17 # Making a copy of the default logging config and updating with this
+ 18 # lets us keep the standard logger and also annotate in actions.
+ 19 # But, we need to do it bit by bit so we are updating the loggers and so on
+ 20 # instead of replacing the loggers.
+ 21 LOGGING [ "loggers" ] . update ( actions_plugin . logging_config ( ) [ "loggers" ] )
+ 22 LOGGING [ "filters" ] . update ( actions_plugin . logging_config ( ) [ "filters" ] )
+ 23 LOGGING [ "handlers" ] . update ( actions_plugin . logging_config ( ) [ "handlers" ] )
+ 24 LOGGING [ "formatters" ] . update ( actions_plugin . logging_config ( ) [ "formatters" ] )
+ 25
+ 26 annotated_logger = AnnotatedLogger (
+ 27 plugins = [
+ 28 actions_plugin ,
+ 29 ] ,
+ 30 name = "annotated_logger.actions" ,
+ 31 config = LOGGING ,
+ 32 )
+ 33
+ 34 annotate_logs = annotated_logger . annotate_logs
+ 35
+ 36
+ 37 class ActionsExample :
+ 38 """Example application that is designed to run in actions."""
+ 39
+ 40 @ annotate_logs ( _typing_requested = True )
+ 41 def first_step ( self , annotated_logger : AnnotatedAdapter ) -> None :
+ 42 """First step of your action."""
+ 43 annotated_logger . info ( "Step 1 running!" )
+ 44
+ 45 @ annotate_logs ( _typing_requested = True )
+ 46 def second_step ( self , annotated_logger : AnnotatedAdapter ) -> None :
+ 47 """Second step of your action."""
+ 48 annotated_logger . debug ( "Step 2 running!" )
+
+
+
+
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
new file mode 100644
index 0000000..8e67c6e
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -0,0 +1,168 @@
+
+
+
+
+ Coverage for example/api.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import logging
+ 4 from typing import Any
+ 5
+ 6 from requests . exceptions import HTTPError
+ 7 from requests . models import Response
+ 8
+ 9 from annotated_logger import AnnotatedAdapter , AnnotatedLogger
+ 10 from annotated_logger . plugins import RequestsPlugin , RuntimeAnnotationsPlugin
+ 11
+ 12
+ 13 def runtime ( _record : logging . LogRecord ) -> str :
+ 14 """Return the string every time."""
+ 15 return "this function is called every time"
+ 16
+ 17
+ 18 annotated_logger = AnnotatedLogger (
+ 19 annotations = { "extra" : "new data" } ,
+ 20 plugins = [
+ 21 RequestsPlugin ( ) ,
+ 22 RuntimeAnnotationsPlugin ( { "runtime" : runtime } ) ,
+ 23 ] ,
+ 24 log_level = logging . DEBUG ,
+ 25 name = "annotated_logger.api" ,
+ 26 )
+ 27
+ 28 annotate_logs = annotated_logger . annotate_logs
+ 29
+ 30
+ 31 @ annotate_logs ( _typing_class = True )
+ 32 class ApiClient :
+ 33 """Example to test the RequestsPlugin."""
+ 34
+ 35 def pre_call ( self , annotated_logger : AnnotatedAdapter ) -> None :
+ 36 """Add an annotation before the start message is logged."""
+ 37 annotated_logger . annotate ( begin = True )
+ 38
+ 39 @ annotate_logs ( _typing_requested = True , pre_call = pre_call )
+ 40 def check ( self , annotated_logger : AnnotatedAdapter ) -> bool :
+ 41 """Check if the request is good to send."""
+ 42 annotated_logger . annotate ( valid = True )
+ 43 annotated_logger . annotate ( lasting = "forever" , persist = True )
+ 44 annotated_logger . info ( "Check passed" )
+ 45 return True
+ 46
+ 47 @ annotate_logs ( _typing_requested = True , pre_call = pre_call )
+ 48 def check_again ( self , annotated_logger : AnnotatedAdapter , * args : list [ Any ] ) -> bool :
+ 49 """Double check if the request is good to send."""
+ 50 annotated_logger . annotate ( valid = True )
+ 51 annotated_logger . annotate ( lasting = "forever" , persist = True )
+ 52 annotated_logger . annotate ( args_length = len ( args ) )
+ 53 annotated_logger . info ( "Check passed" )
+ 54 return True
+ 55
+ 56 @ annotate_logs ( _typing_requested = True )
+ 57 def prepare ( self , annotated_logger : AnnotatedAdapter ) -> bool :
+ 58 """Prepare the request to send."""
+ 59 self . data = { }
+ 60 annotated_logger . annotate ( prepared = True )
+ 61 annotated_logger . info ( "Preparation complete" )
+ 62 return True
+ 63
+ 64 @ annotate_logs ( )
+ 65 # def throw_http_exception(self) -> None:
+ 66 def throw_http_exception ( self ) -> None :
+ 67 """Explode and log the status code."""
+ 68 response = Response ( )
+ 69 response . status_code = 418
+ 70 response . reason = "i_am_a_teapot"
+ 71 raise HTTPError ( response = response , request = None )
+
+
+
+
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
new file mode 100644
index 0000000..89ee5e9
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -0,0 +1,329 @@
+
+
+
+
+ Coverage for example/calculator.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import logging
+ 4
+ 5 from annotated_logger import AnnotatedAdapter , AnnotatedLogger
+ 6 from annotated_logger . plugins import (
+ 7 NameAdjusterPlugin ,
+ 8 NestedRemoverPlugin ,
+ 9 RemoverPlugin ,
+ 10 RuntimeAnnotationsPlugin ,
+ 11 )
+ 12
+ 13
+ 14 class BoomError ( Exception ) :
+ 15 """Boom."""
+ 16
+ 17
+ 18 def runtime ( _record : logging . LogRecord ) -> str :
+ 19 """Return the string every time."""
+ 20 return "this function is called every time"
+ 21
+ 22
+ 23 annotated_logger = AnnotatedLogger (
+ 24 annotations = {
+ 25 "extra" : "new data" ,
+ 26 "nested_extra" : { "nested_key" : { "double_nested_key" : "value" } } ,
+ 27 } ,
+ 28 log_level = logging . DEBUG ,
+ 29 plugins = [
+ 30 NameAdjusterPlugin ( names = [ "joke" ] , prefix = "cheezy_" ) ,
+ 31 NameAdjusterPlugin ( names = [ "power" ] , postfix = "_overwhelming" ) ,
+ 32 RemoverPlugin ( "taskName" ) ,
+ 33 NestedRemoverPlugin ( [ "double_nested_key" ] ) ,
+ 34 RuntimeAnnotationsPlugin ( { "runtime" : runtime } ) ,
+ 35 ] ,
+ 36 name = "annotated_logger.calculator" ,
+ 37 )
+ 38
+ 39 annotate_logs = annotated_logger . annotate_logs
+ 40
+ 41 Number = int | float
+ 42
+ 43
+ 44 class Calculator :
+ 45 """Calculator application with very limited (and weird) functionality.
+ 46
+ 47 This application is meant to highlight how to use the annotated-logger
+ 48 package. It also serves as a way to test it.
+ 49 """
+ 50
+ 51 def __init__ ( self , first : Number , second : Number ) -> None :
+ 52 """Create instance of example Calculator application.
+ 53
+ 54 The Calculator is very simple and has only two attributes
+ 55 that serve as two operands in a calculation.
+ 56 """
+ 57 self . first = first
+ 58 self . second = second
+ 59 self . boom : bool = False
+ 60
+ 61 def check_zero_division ( self , annotated_logger : AnnotatedAdapter ) -> None :
+ 62 """Annotate if divide will crash."""
+ 63 will_crash = False
+ 64 if self . second == 0 :
+ 65 will_crash = True
+ 66 annotated_logger . annotate ( will_crash = will_crash )
+ 67
+ 68 def will_pass (
+ 69 self ,
+ 70 annotated_logger : AnnotatedAdapter ,
+ 71 * args : ... , # noqa: ARG002
+ 72 ** kwargs : ... , # noqa: ARG002
+ 73 ) -> None :
+ 74 """Predict that the method will not crash."""
+ 75 annotated_logger . annotate ( will_crash = False )
+ 76
+ 77 def check_prediction_crashed_correctly (
+ 78 self ,
+ 79 annotated_logger : AnnotatedAdapter ,
+ 80 * args : ... , # noqa: ARG002
+ 81 ** kwargs : ... , # noqa: ARG002
+ 82 ) -> None :
+ 83 """Check if the prediction was correct."""
+ 84 if self . boom :
+ 85 annotated_logger . warning ( "boom" )
+ 86 raise BoomError
+ 87 annotated_logger . annotate ( first_again = self . first )
+ 88 prediction = annotated_logger . filter . annotations . get ( "will_crash" )
+ 89 success = annotated_logger . filter . annotations [ "success" ]
+ 90 annotated_logger . info (
+ 91 "Prediction result" , extra = { "result" : success != prediction }
+ 92 )
+ 93
+ 94 @ annotated_logger . annotate_logs (
+ 95 success_info = False ,
+ 96 pre_call = check_zero_division ,
+ 97 _typing_requested = True ,
+ 98 post_call = check_prediction_crashed_correctly ,
+ 99 )
+ 100 def divide ( self , annotated_logger : AnnotatedAdapter ) -> Number :
+ 101 """Divide self.first by self.second."""
+ 102 annotated_logger . warning (
+ 103 "If you divide by zero you'll create a singularity in the fabric of space-time!" , # noqa: E501
+ 104 extra = { "joke" : True } ,
+ 105 )
+ 106 try :
+ 107 return self . first / self . second
+ 108 except ZeroDivisionError :
+ 109 # This tests that calls to `logger.exception` work with sentry
+ 110 # Normally you would only use `logger` outside of a logged function
+ 111 annotated_logger . exception ( "This will get sent to sentry if enabled." )
+ 112 raise
+ 113
+ 114 @ annotate_logs (
+ 115 success_info = False ,
+ 116 _typing_requested = True ,
+ 117 pre_call = will_pass ,
+ 118 post_call = check_prediction_crashed_correctly ,
+ 119 )
+ 120 def multiply (
+ 121 self , annotated_logger : AnnotatedAdapter , first : Number , second : Number
+ 122 ) -> Number :
+ 123 """Multiple the first parameter by the second parameter."""
+ 124 annotated_logger . annotate ( first = first , second = second )
+ 125
+ 126 return first * second
+ 127
+ 128 @ annotate_logs ( success_info = False , provided = True , _typing_requested = True )
+ 129 def multiply2 (
+ 130 self , annotated_logger : AnnotatedAdapter , first : Number , second : Number
+ 131 ) -> Number :
+ 132 """Multiple the first parameter by the second parameter."""
+ 133 annotated_logger . annotate ( first = first )
+ 134 annotated_logger . annotate ( second = second )
+ 135
+ 136 return first * second
+ 137
+ 138 @ annotate_logs ( _typing_requested = True )
+ 139 def power (
+ 140 self , annotated_logger : AnnotatedAdapter , num : Number , power : int
+ 141 ) -> Number :
+ 142 """Raise num to the power power."""
+ 143 annotated_logger . annotate ( power = True )
+ 144 base : Number = num
+ 145 for _ in range ( 1 , power ) :
+ 146 base = self . multiply2 ( annotated_logger , base , num )
+ 147 return base
+ 148
+ 149 @ annotate_logs ( success_info = False , _typing_requested = True )
+ 150 def add ( self , annotated_logger : AnnotatedAdapter ) -> Number :
+ 151 # def add(self, *args, annotated_logger: AnnotatedAdapter) -> Number:
+ 152 """Add self.first and self.second."""
+ 153 annotated_logger . annotate ( first = self . first , second = self . second , foo = "bar" )
+ 154
+ 155 annotated_logger . info (
+ 156 "This message will have 'other' as well as 'first' from the annotation above." , # noqa: E501
+ 157 extra = { "other" : "value" } ,
+ 158 )
+ 159 annotated_logger . info (
+ 160 "This message will have the 'first' annotation and the defaults, but not the 'other'" # noqa: E501
+ 161 )
+ 162 if self . first is None :
+ 163 annotated_logger . error ( "Must have a first value!" )
+ 164 self . first = 0
+ 165 return self . first + self . second
+ 166
+ 167 @ annotate_logs ( _typing_requested = True )
+ 168 def subtract ( self , annotated_logger : AnnotatedAdapter ) -> Number :
+ 169 """Subtract the saved first from the saved second."""
+ 170 annotated_logger . debug ( "Order does matter when subtracting" )
+ 171 return self . first - self . second
+ 172
+ 173 @ annotate_logs ( _typing_requested = True )
+ 174 def inverse ( self , annotated_logger : AnnotatedAdapter , num : Number ) -> Number | bool :
+ 175 """Divide 1 by num."""
+ 176 try :
+ 177 return 1 / num
+ 178 except ZeroDivisionError :
+ 179 annotated_logger . exception ( "Cannot divide by zero!" )
+ 180 return False
+ 181
+ 182 @ annotate_logs ( )
+ 183 def pemdas_example ( self ) -> list [ int ] :
+ 184 """Check order of operations."""
+ 185 return [ 2 * 3 + 4 , 2 * ( 3 + 4 ) ]
+ 186
+ 187 @ annotate_logs ( _typing_requested = False )
+ 188 def is_odd ( self , number : Number ) -> bool :
+ 189 """Check if number is odd."""
+ 190 return number % 2 == 0
+ 191
+ 192 @ annotate_logs ( _typing_requested = True )
+ 193 def factorial ( self , annotated_logger : AnnotatedAdapter , num : int ) -> int :
+ 194 """Perform the factiorial function."""
+ 195 annotated_logger . annotate ( temp = True )
+ 196 numbers = annotated_logger . iterator (
+ 197 "factorial numbers" , iter ( range ( 1 , num + 1 ) )
+ 198 )
+ 199 total = 1
+ 200 for n in numbers :
+ 201 total = total * n
+ 202 return total
+ 203
+ 204 @ annotate_logs ( _typing_requested = True )
+ 205 def sensitive_factorial (
+ 206 self , annotated_logger : AnnotatedAdapter , num : int , level : str = "info"
+ 207 ) -> int :
+ 208 """Perform the factorial function, but don't log the value."""
+ 209 numbers = annotated_logger . iterator (
+ 210 "factorial numbers" , iter ( range ( 1 , num + 1 ) ) , value = False , level = level
+ 211 )
+ 212 total = 1
+ 213 for n in numbers :
+ 214 total = total * n
+ 215 return total
+ 216
+ 217 @ classmethod
+ 218 @ annotate_logs ( _typing_requested = True )
+ 219 def is_math_cool ( cls : type [ Calculator ] , annotated_logger : AnnotatedAdapter ) -> bool :
+ 220 """Answer the obvious question."""
+ 221 cls . sanity_check ( annotated_logger , "is_math_cool" )
+ 222 annotated_logger . info ( "What a silly question!" )
+ 223 return True
+ 224
+ 225 @ classmethod
+ 226 @ annotate_logs ( _typing_requested = True , provided = True )
+ 227 def sanity_check (
+ 228 cls : type [ Calculator ] , annotated_logger : AnnotatedAdapter , source : str
+ 229 ) -> None :
+ 230 """Reassures the caller they are sane."""
+ 231 annotated_logger . annotate ( sane = True )
+ 232 annotated_logger . info ( "Checking sanity" , extra = { "source" : source } )
+
+
+
+
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
new file mode 100644
index 0000000..1e62cfe
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -0,0 +1,208 @@
+
+
+
+
+ Coverage for example/default.py: 100%
+
+
+
+
+
+
+
+ 1 from annotated_logger import AnnotatedAdapter , AnnotatedLogger
+ 2 from annotated_logger . plugins import RemoverPlugin
+ 3
+ 4 # Actions runs in async.io it appears and that inejcts `taskName`
+ 5 # But, locally that's not there, so it messes up the absent all tests
+ 6 annotated_logger = AnnotatedLogger ( plugins = [ RemoverPlugin ( [ "taskName" ] ) ] )
+ 7
+ 8 annotate_logs = annotated_logger . annotate_logs
+ 9
+ 10
+ 11 class DefaultExample :
+ 12 """Simple example of the annotated logger with minimal config."""
+ 13
+ 14 @ annotate_logs ( _typing_requested = True )
+ 15 def foo ( self , annotated_logger : AnnotatedAdapter ) -> None :
+ 16 """Emit an info log."""
+ 17 annotated_logger . info ( "foo" )
+ 18
+ 19 @ annotate_logs ( _typing_requested = True )
+ 20 def var_args (
+ 21 self ,
+ 22 annotated_logger : AnnotatedAdapter ,
+ 23 _first : str ,
+ 24 * my_args : str ,
+ 25 ) -> bool :
+ 26 """Take a splat of args."""
+ 27 annotated_logger . annotate ( first = _first )
+ 28 for i , arg in enumerate ( my_args ) :
+ 29 # Need to add persist=False to make the type checker happy
+ 30 annotated_logger . annotate ( persist = False , ** { f" arg { i } " : arg } )
+ 31 return True
+ 32
+ 33 @ annotate_logs ( _typing_requested = True )
+ 34 def var_kwargs (
+ 35 self , annotated_logger : AnnotatedAdapter , _first : str , ** kwargs : str
+ 36 ) -> bool :
+ 37 """Take a splat of args."""
+ 38 for name , arg in kwargs . items ( ) :
+ 39 # Need to add persist=False to make the type checker happy
+ 40 annotated_logger . annotate ( persist = False , ** { name : arg } )
+ 41 return True
+ 42
+ 43 @ annotate_logs ( _typing_requested = True )
+ 44 def var_args_and_kwargs (
+ 45 self , annotated_logger : AnnotatedAdapter , _first : str , * args : str , ** kwargs : str
+ 46 ) -> bool :
+ 47 """Take a splat of args."""
+ 48 for i , arg in enumerate ( args ) :
+ 49 # Need to add persist=False to make the type checker happy
+ 50 annotated_logger . annotate ( persist = False , ** { f" arg { i } " : arg } )
+ 51 for name , arg in kwargs . items ( ) :
+ 52 annotated_logger . annotate ( persist = False , ** { name : arg } )
+ 53 return True
+ 54
+ 55 @ annotate_logs ( _typing_requested = True )
+ 56 def var_args_and_kwargs_provided_outer (
+ 57 self , annotated_logger : AnnotatedAdapter , _first : str , * args : str , ** kwargs : str
+ 58 ) -> bool :
+ 59 """Call the version that has the logger provided."""
+ 60 annotated_logger . annotate ( outer = True )
+ 61 return self . var_args_and_kwargs_provided (
+ 62 annotated_logger , _first , * args , ** kwargs
+ 63 )
+ 64
+ 65 @ annotate_logs ( provided = True , _typing_requested = True )
+ 66 def var_args_and_kwargs_provided (
+ 67 self , annotated_logger : AnnotatedAdapter , _first : str , * args : str , ** kwargs : str
+ 68 ) -> bool :
+ 69 """Take a splat of args."""
+ 70 for i , arg in enumerate ( args ) :
+ 71 # Need to add persist=False to make the type checker happy
+ 72 annotated_logger . annotate ( persist = False , ** { f" arg { i } " : arg } )
+ 73 for name , arg in kwargs . items ( ) :
+ 74 annotated_logger . annotate ( persist = False , ** { name : arg } )
+ 75 return True
+ 76
+ 77 @ annotate_logs ( _typing_requested = True )
+ 78 def positional_only (
+ 79 self ,
+ 80 annotated_logger : AnnotatedAdapter ,
+ 81 _first : str ,
+ 82 * ,
+ 83 _second : str ,
+ 84 # self, annotated_logger: AnnotatedAdapter, _first: str, *my_args: str
+ 85 ) -> bool :
+ 86 """Take a splat of args."""
+ 87 annotated_logger . annotate ( first = _first )
+ 88 annotated_logger . annotate ( second = _second )
+ 89 return True
+ 90
+ 91
+ 92 @ annotate_logs ( _typing_self = False , _typing_requested = True )
+ 93 def var_args_and_kwargs_provided_outer (
+ 94 annotated_logger : AnnotatedAdapter , _first : str , * args : str , ** kwargs : str
+ 95 ) -> bool :
+ 96 """Call the version that has the logger provided."""
+ 97 annotated_logger . annotate ( outer = True )
+ 98 return var_args_and_kwargs_provided ( annotated_logger , _first , * args , ** kwargs )
+ 99
+ 100
+ 101 @ annotate_logs ( provided = True , _typing_self = False , _typing_requested = True )
+ 102 def var_args_and_kwargs_provided (
+ 103 annotated_logger : AnnotatedAdapter , _first : str , * args : str , ** kwargs : str
+ 104 ) -> bool :
+ 105 """Take a splat of args."""
+ 106 for i , arg in enumerate ( args ) :
+ 107 # Need to add persist=False to make the type checker happy
+ 108 annotated_logger . annotate ( persist = False , ** { f" arg { i } " : arg } )
+ 109 for name , arg in kwargs . items ( ) :
+ 110 annotated_logger . annotate ( persist = False , ** { name : arg } )
+ 111 return True
+
+
+
+
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
new file mode 100644
index 0000000..52d8430
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -0,0 +1,110 @@
+
+
+
+
+ Coverage for example/invalid_order.py: 100%
+
+
+
+
+
+
+
+ 1 from annotated_logger import AnnotatedAdapter , AnnotatedLogger
+ 2
+ 3 # Actions runs in async.io it appears and that inejcts `taskName`
+ 4 # But, locally that's not there, so it messes up the absent all tests
+ 5 annotated_logger = AnnotatedLogger ( )
+ 6
+ 7 annotate_logs = annotated_logger . annotate_logs
+ 8
+ 9
+ 10 @ annotate_logs ( _typing_requested = True )
+ 11 def wrong_order ( _first : str , annotated_logger : AnnotatedAdapter ) -> None :
+ 12 """Blow up because we require annotated_logger be first."""
+ 13 annotated_logger . info ( "This should never be reachable." ) # pragma: no cover
+
+
+
+
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
new file mode 100644
index 0000000..abea927
--- /dev/null
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -0,0 +1,324 @@
+
+
+
+
+ Coverage for example/logging_config.py: 100%
+
+
+
+
+
+
+
+ 1 import logging
+ 2 import logging . config
+ 3
+ 4 from annotated_logger import AnnotatedAdapter , AnnotatedFilter , AnnotatedLogger
+ 5 from annotated_logger . plugins import BasePlugin , RenamerPlugin , RuntimeAnnotationsPlugin
+ 6
+ 7 # This logging config creates 4 loggers:
+ 8 # * A logger for "annotated_logger.logging_config", which logs all messages as json and
+ 9 # also logs errors as plain text. This is an example of how to log to multiple places.
+ 10 # * A logger for "annotated_logger.logging_config_weird", which logs all messages at
+ 11 # info and up. It has a different namespace (_weird instead of .weird) and so has
+ 12 # isolated annotations.
+ 13 # * A logger for "annotated_logger.logging_config.long", which logs all messages at info
+ 14 # as text with a note added. This logger allows it's logs to propagate up and so the
+ 15 # "annotated_logger.logging_config" logger will also log these messages in it's json
+ 16 # format without the note from this logger.
+ 17 # * A logger for "annotated_logger.logging_config.logger", which logs all messages as
+ 18 # json. This logger does not propagate so that the "annotated_logger.logging_config"
+ 19 # logger doesn't also log these messages. This logger is used by a non annotated
+ 20 # method, but defines a filter that is annotated with the base annotations defined
+ 21 # in `AnnotatedLogger(...`. This is an example of how to add annotations to external
+ 22 # logs such as django. Note, the annotations this logger receives are based on the
+ 23 # annotations passed in to the `AnnotatedLogger` invocation with the config,
+ 24 # The second invocation for "weird" has different annotations. You should be able
+ 25 # to have multiple of these with different annotations by invoking `AnnotatedLogger`
+ 26 # multiple times and including `disable_existing_loggers` in the later configs.
+ 27 # You can also provide custom annotations here if you wish to override the
+ 28 # annotations from the annotated logger.
+ 29 #
+ 30 # Note: When creating multiple loggers, especially when doing so in different
+ 31 # files/configs keep in mind that names should be unique or they will override
+ 32 # eachother leaving you with a very confusing mess.
+ 33 # If you want to see how to more easily merge settings into the default logging
+ 34 # dict this package uses see the `actions.py` example.
+ 35 LOGGING = {
+ 36 "version" : 1 ,
+ 37 "disable_existing_loggers" : False ,
+ 38 "filters" : {
+ 39 "logging_config.logger_filter" : {
+ 40 "annotated_filter" : True ,
+ 41 # You can override the annotations that would be provided like so
+ 42 # But, if you want to do that you are likely better off
+ 43 # using a filter not associated with an AnnotatedLogger
+ 44 # like the `logging_config.logger_filter_parens` below
+ 45 "annotations" : { "config_based_filter" : True } ,
+ 46 } ,
+ 47 "logging_config.logger_filter_parens" : {
+ 48 "()" : AnnotatedFilter ,
+ 49 "annotations" : { "decorated" : False , "class_based_filter" : True } ,
+ 50 "class_annotations" : { } ,
+ 51 "plugins" : [
+ 52 BasePlugin ( ) ,
+ 53 RuntimeAnnotationsPlugin ( { "custom_runtime" : lambda _record : True } ) ,
+ 54 ] ,
+ 55 } ,
+ 56 } ,
+ 57 "handlers" : {
+ 58 "logging_config.annotated_handler" : {
+ 59 "class" : "logging.StreamHandler" ,
+ 60 "formatter" : "logging_config.annotated_formatter" ,
+ 61 } ,
+ 62 "logging_config.logger_handler" : {
+ 63 "class" : "logging.StreamHandler" ,
+ 64 # Note that this handler is specifically attached to
+ 65 # `annotated_logger.logging_config.logger` which we intend to use only as a
+ 66 # logger not generated by a decorator. If you add filters to a handler that
+ 67 # will be invoked when logging from a logger generated by the decorator
+ 68 # AKA, logging via the `annotated_logger` parameter, these filters will
+ 69 # be applied *after* the filters that are dynamically generated/updated
+ 70 # and so can override any annotations that share a name.
+ 71 # In this case, if a function annotated `custom_runtime` or one of the
+ 72 # other fields set in the filters above, that value would be overridden
+ 73 # by the value in the filter set in the config.
+ 74 "filters" : [
+ 75 "logging_config.logger_filter" ,
+ 76 "logging_config.logger_filter_parens" ,
+ 77 ] ,
+ 78 "formatter" : "logging_config.annotated_formatter" ,
+ 79 } ,
+ 80 "logging_config.long_handler" : {
+ 81 "class" : "logging.StreamHandler" ,
+ 82 "formatter" : "logging_config.long_formatter" ,
+ 83 } ,
+ 84 "logging_config.error_handler" : {
+ 85 "class" : "logging.StreamHandler" ,
+ 86 "level" : "ERROR" ,
+ 87 "formatter" : "logging_config.error_formatter" ,
+ 88 } ,
+ 89 "logging_config.weird_handler" : {
+ 90 "class" : "logging.StreamHandler" ,
+ 91 "formatter" : "logging_config.weird_formatter" ,
+ 92 } ,
+ 93 } ,
+ 94 "formatters" : {
+ 95 "logging_config.annotated_formatter" : {
+ 96 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" ,
+ 97 # Note that this format string uses `time` which is set by the renamer
+ 98 # plugin. It also has `lvl` which is there strictly to test our fallback
+ 99 # to using `levelno` in the mocks to determine level.
+ 100 "format" : "{time} {lvl} {name} {runtime} {message}" ,
+ 101 "style" : "{" ,
+ 102 } ,
+ 103 "logging_config.error_formatter" : {
+ 104 "format" : "{level} {message}" ,
+ 105 "style" : "{" ,
+ 106 } ,
+ 107 "logging_config.long_formatter" : {
+ 108 "format" : "{lvl} Long message, may be split {message}" ,
+ 109 # 3.12 added support for defaults in dict configs
+ 110 # With that we can add the format and defaults below
+ 111 # for a more realistic example. Not all of the messages
+ 112 # in the method we set to use this are long enough to be split,
+ 113 # so, some of them don't have the message_part(s) fields.
+ 114 # "format": "{level} {message_part}/{message_parts} {message}", # noqa: ERA001 E501
+ 115 # "defaults": {"message_part": 1, "message_parts": 1}, # noqa: ERA001
+ 116 "style" : "{" ,
+ 117 } ,
+ 118 "logging_config.weird_formatter" : {
+ 119 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" ,
+ 120 "format" : "{time} {lvl} {name} {message}" ,
+ 121 "style" : "{" ,
+ 122 } ,
+ 123 } ,
+ 124 "loggers" : {
+ 125 "annotated_logger.logging_config" : {
+ 126 "level" : "DEBUG" ,
+ 127 "handlers" : [
+ 128 "logging_config.annotated_handler" ,
+ 129 "logging_config.error_handler" ,
+ 130 ] ,
+ 131 "propagate" : True ,
+ 132 } ,
+ 133 "annotated_logger.logging_config_weird" : {
+ 134 "level" : "INFO" ,
+ 135 "handlers" : [ "logging_config.weird_handler" ] ,
+ 136 "propagate" : True ,
+ 137 } ,
+ 138 "annotated_logger.logging_config.long" : {
+ 139 "level" : "INFO" ,
+ 140 "handlers" : [ "logging_config.long_handler" ] ,
+ 141 "propagate" : True ,
+ 142 } ,
+ 143 "annotated_logger.logging_config.logger" : {
+ 144 "handlers" : [ "logging_config.logger_handler" ] ,
+ 145 "propagate" : False ,
+ 146 } ,
+ 147 } ,
+ 148 }
+ 149
+ 150
+ 151 def runtime ( _record : logging . LogRecord ) -> str :
+ 152 """Return the string every time."""
+ 153 return "this function is called every time"
+ 154
+ 155
+ 156 annotated_logger = AnnotatedLogger (
+ 157 annotations = { "hostname" : "my-host" } ,
+ 158 # This is deprecated, use the RuntimeAnnotationsPlugin instead.
+ 159 # This param is kept for backwards compatibility and creates a
+ 160 # RuntimeAnnotationsPlugin instead.
+ 161 # This is left as an example and to provide test coverage.
+ 162 plugins = [
+ 163 RenamerPlugin ( time = "created" , lvl = "levelname" ) ,
+ 164 RuntimeAnnotationsPlugin ( { "runtime" : runtime } ) ,
+ 165 ] ,
+ 166 log_level = logging . DEBUG ,
+ 167 max_length = 200 ,
+ 168 name = "annotated_logger.logging_config" ,
+ 169 config = LOGGING ,
+ 170 )
+ 171 annotate_logs = annotated_logger . annotate_logs
+ 172
+ 173 weird_annotated_logger = AnnotatedLogger (
+ 174 annotations = { "weird" : True } ,
+ 175 plugins = [ RenamerPlugin ( time = "created" , lvl = "levelname" ) ] ,
+ 176 log_level = logging . INFO ,
+ 177 name = "annotated_logger.logging_config_weird" ,
+ 178 config = False ,
+ 179 )
+ 180 weird_annotate_logs = weird_annotated_logger . annotate_logs
+ 181
+ 182 logger = logging . getLogger ( "annotated_logger.logging_config.logger" )
+ 183 logger . setLevel ( "DEBUG" )
+ 184
+ 185
+ 186 def make_some_logs ( ) -> None :
+ 187 """Log messages using a native logging logger."""
+ 188 logger . debug ( "this is debug" )
+ 189 logger . info ( "this is info" )
+ 190 logger . warning ( "this is warning" )
+ 191 logger . error ( "this is error" )
+ 192
+ 193
+ 194 @ annotate_logs ( _typing_requested = True , _typing_self = False )
+ 195 def make_some_annotated_logs ( annotated_logger : AnnotatedAdapter ) -> None :
+ 196 """Log messages using the provided annotated_logger."""
+ 197 annotated_logger . debug ( "this is debug" )
+ 198 annotated_logger . info ( "this is info" )
+ 199 annotated_logger . warning ( "this is warning" )
+ 200 annotated_logger . error ( "this is error" )
+ 201
+ 202
+ 203 @ weird_annotate_logs (
+ 204 _typing_requested = True ,
+ 205 _typing_self = False ,
+ 206 )
+ 207 def make_some_weird_logs ( annotated_logger : AnnotatedAdapter ) -> None :
+ 208 """Log messages using the provided annotated_logger."""
+ 209 annotated_logger . debug ( "this is debug" )
+ 210 annotated_logger . info ( "this is info" )
+ 211 annotated_logger . warning ( "this is warning" )
+ 212 annotated_logger . error ( "this is error" )
+ 213
+ 214
+ 215 @ annotate_logs (
+ 216 _typing_requested = True ,
+ 217 _typing_self = False ,
+ 218 logger_name = "annotated_logger.logging_config.long" ,
+ 219 success_info = False ,
+ 220 )
+ 221 def log_really_long_message ( annotated_logger : AnnotatedAdapter ) -> None :
+ 222 """Log a message that is so long it will get split."""
+ 223 message = "1" * 200 + "2" * 200 + "3333"
+ 224 annotated_logger . info ( message )
+ 225 annotated_logger . info ( "4" * 200 )
+ 226 annotated_logger . info ( "5" * 201 )
+ 227 annotated_logger . info ( "6" * 199 )
+
+
+
+
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
new file mode 100644
index 0000000..34d7937
--- /dev/null
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -0,0 +1,1058 @@
+
+
+
+
+ Coverage for annotated_logger/__init__.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import contextlib
+ 4 import inspect
+ 5 import logging
+ 6 import logging . config
+ 7 import time
+ 8 import uuid
+ 9 from copy import copy , deepcopy
+ 10 from typing import (
+ 11 TYPE_CHECKING ,
+ 12 Any ,
+ 13 Callable ,
+ 14 Concatenate ,
+ 15 Iterator ,
+ 16 Literal ,
+ 17 ParamSpec ,
+ 18 Protocol ,
+ 19 TypeVar ,
+ 20 cast ,
+ 21 overload ,
+ 22 )
+ 23
+ 24 from makefun import wraps
+ 25
+ 26 from annotated_logger . filter import AnnotatedFilter
+ 27 from annotated_logger . plugins import BasePlugin
+ 28
+ 29 if TYPE_CHECKING : # pragma: no cover
+ 30 from collections . abc import MutableMapping
+ 31
+ 32 VERSION = "1.2.0" # pragma: no mutate
+ 33
+ 34 T = TypeVar ( "T" )
+ 35 P = ParamSpec ( "P" )
+ 36 P2 = ParamSpec ( "P2" )
+ 37 P3 = ParamSpec ( "P3" )
+ 38 R = TypeVar ( "R" )
+ 39 S = TypeVar ( "S" )
+ 40 S2 = TypeVar ( "S2" )
+ 41 C_co = TypeVar ( "C_co" , covariant = True )
+ 42
+ 43
+ 44 class AnnotatedClass ( Protocol [ C_co ] ) :
+ 45 """Protocol for typing classes that we annotate and add the logger to."""
+ 46
+ 47 annotated_logger : AnnotatedAdapter
+ 48
+ 49
+ 50 PreCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
+ 51 PostCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
+ 52 SelfLoggerAndParams = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , R ]
+ 53 LoggerAndParams = Callable [ Concatenate [ "AnnotatedAdapter" , P ] , R ]
+ 54 SelfAndParams = Callable [ Concatenate [ S , P ] , R ]
+ 55 ParamsOnly = Callable [ P , R ]
+ 56 SelfAndLogger = Callable [ [ S , "AnnotatedAdapter" ] , R ]
+ 57 LoggerOnly = Callable [ [ "AnnotatedAdapter" ] , R ]
+ 58 SelfOnly = Callable [ [ S ] , R ]
+ 59 Empty = Callable [ [ ] , R ]
+ 60
+ 61 NoInjectionSelf = Callable [ [ SelfAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
+ 62 NoInjectionBare = Callable [ [ ParamsOnly [ P , R ] ] , ParamsOnly [ P , R ] ]
+ 63 InjectionSelf = Callable [ [ SelfLoggerAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
+ 64 InjectionSelfProvide = Callable [
+ 65 [ SelfLoggerAndParams [ S , P , R ] ] , SelfLoggerAndParams [ S , P , R ]
+ 66 ]
+ 67 InjectionBare = Callable [ [ LoggerAndParams [ P , R ] ] , ParamsOnly [ P , R ] ]
+ 68 InjectionBareProvide = Callable [ [ LoggerAndParams [ P , R ] ] , LoggerAndParams [ P , R ] ]
+ 69
+ 70 Function = (
+ 71 SelfLoggerAndParams [ S , P , R ]
+ 72 | SelfAndParams [ S , P , R ]
+ 73 | SelfAndLogger [ S , R ]
+ 74 | SelfOnly [ S , R ]
+ 75 | LoggerAndParams [ P , R ]
+ 76 | ParamsOnly [ P , R ]
+ 77 | LoggerOnly [ R ]
+ 78 | Empty [ R ]
+ 79 )
+ 80 Decorator = (
+ 81 NoInjectionSelf [ S , P , R ]
+ 82 | InjectionSelf [ S , P , R ]
+ 83 | InjectionSelfProvide [ S , P , R ]
+ 84 | NoInjectionBare [ P , R ]
+ 85 | InjectionBare [ P , R ]
+ 86 | InjectionBareProvide [ P , R ]
+ 87 )
+ 88 Annotations = dict [ str , Any ]
+ 89
+ 90
+ 91 DEFAULT_LOGGING_CONFIG = {
+ 92 "version" : 1 ,
+ 93 "disable_existing_loggers" : False , # pragma: no mutate
+ 94 "filters" : {
+ 95 "annotated_filter" : {
+ 96 "annotated_filter" : True , # pragma: no mutate
+ 97 }
+ 98 } ,
+ 99 "handlers" : {
+ 100 "annotated_handler" : {
+ 101 "class" : "logging.StreamHandler" ,
+ 102 "formatter" : "annotated_formatter" ,
+ 103 } ,
+ 104 } ,
+ 105 "formatters" : {
+ 106 "annotated_formatter" : {
+ 107 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" , # pragma: no mutate
+ 108 "format" : "{created} {levelname} {name} {message}" , # pragma: no mutate
+ 109 "style" : "{" ,
+ 110 } ,
+ 111 } ,
+ 112 "loggers" : {
+ 113 "annotated_logger" : {
+ 114 "level" : "DEBUG" ,
+ 115 "handlers" : [ "annotated_handler" ] ,
+ 116 "propagate" : False , # pragma: no mutate
+ 117 } ,
+ 118 } ,
+ 119 }
+ 120
+ 121
+ 122 class AnnotatedIterator ( Iterator [ T ] ) :
+ 123 """Iterator that logs as it iterates."""
+ 124
+ 125 def __init__ (
+ 126 self ,
+ 127 logger : AnnotatedAdapter ,
+ 128 name : str ,
+ 129 wrapped : Iterator [ T ] ,
+ 130 * ,
+ 131 value : bool ,
+ 132 level : str ,
+ 133 ) -> None :
+ 134 """Store the wrapped iterator, the logger and note if we log the value."""
+ 135 self . wrapped = wrapped
+ 136 self . logger = logger
+ 137 self . extras : dict [ str , T | str ] = { "iterator" : name }
+ 138 self . value = value
+ 139 log_methods = {
+ 140 "debug" : self . logger . debug ,
+ 141 "info" : self . logger . info ,
+ 142 "warning" : self . logger . warning ,
+ 143 "error" : self . logger . error ,
+ 144 "exception" : self . logger . exception ,
+ 145 }
+ 146 self . log_method = log_methods [ level ]
+ 147
+ 148 def __iter__ ( self ) -> AnnotatedIterator [ T ] :
+ 149 """Log the start of the iteration."""
+ 150 self . log_method ( "Starting iteration" , extra = self . extras )
+ 151 return self
+ 152
+ 153 def __next__ ( self ) -> T :
+ 154 """Log that we are at the next iteration."""
+ 155 try :
+ 156 value = next ( self . wrapped )
+ 157 if self . value :
+ 158 self . extras [ "value" ] = value
+ 159 except StopIteration :
+ 160 self . log_method ( "Execution complete" , extra = self . extras )
+ 161 raise
+ 162
+ 163 self . log_method ( "next" , extra = self . extras )
+ 164 return value
+ 165
+ 166
+ 167 class AnnotatedAdapter ( logging . LoggerAdapter ) : # pyright: ignore[reportMissingTypeArgument]
+ 168 """Adapter that provides extra methods."""
+ 169
+ 170 def __init__ (
+ 171 self ,
+ 172 logger : logging . Logger ,
+ 173 annotated_filter : AnnotatedFilter ,
+ 174 max_length : int | None = None ,
+ 175 ) -> None :
+ 176 """Adapter that acts like a LogRecord, but allows for annotations."""
+ 177 self . filter = annotated_filter
+ 178 self . logger = logger
+ 179 self . logger . addFilter ( annotated_filter )
+ 180 self . max_length = max_length
+ 181
+ 182 # We don't need to send in contextual information here
+ 183 # as we do it in the filter for runtime stuff
+ 184 super ( ) . __init__ ( logger )
+ 185
+ 186 def iterator (
+ 187 self ,
+ 188 name : str ,
+ 189 wrapped : Iterator [ T ] ,
+ 190 * ,
+ 191 value : bool = True ,
+ 192 level : str = "info" ,
+ 193 ) -> AnnotatedIterator [ T ] :
+ 194 """Return an iterator that logs as it iterates."""
+ 195 return AnnotatedIterator ( self , name , wrapped , value = value , level = level )
+ 196
+ 197 def process (
+ 198 self , msg : str , kwargs : MutableMapping [ str , Any ]
+ 199 ) -> tuple [ str , MutableMapping [ str , Any ] ] :
+ 200 """Override default LoggerAdapter process behavior.
+ 201
+ 202 By default a LoggerAdapter replaces the extras passed in a logger call with
+ 203 the ones given at it's initialization. That's not the behavior we want.
+ 204 So, we just return the kwargs as provided instead.
+ 205
+ 206 3.13 adds a `merge_extra` argument which should make this method unneeded.
+ 207 But, it doesn't make sense to force everyone to use python 3.13.
+ 208 """
+ 209 return msg , kwargs
+ 210
+ 211 def log (
+ 212 self ,
+ 213 level : int ,
+ 214 msg : object ,
+ 215 * args : object ,
+ 216 ** kwargs : object ,
+ 217 ) -> None :
+ 218 """Override log method to allow for message splitting."""
+ 219 if not self . max_length or not isinstance ( msg , str ) :
+ 220 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 221
+ 222 msg_len = len ( msg ) # pyright: ignore[reportArgumentType]
+ 223 if msg_len <= self . max_length :
+ 224 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 225
+ 226 msg_chunks = [ ]
+ 227 while len ( msg ) > self . max_length : # pyright: ignore[reportArgumentType] # pragma: no mutate
+ 228 msg_chunks . append ( msg [ : self . max_length ] ) # pyright: ignore[reportArgumentType]
+ 229 msg = msg [ self . max_length : ] # pyright: ignore[reportArgumentType]
+ 230 kwargs [ "extra" ] = { "message_parts" : len ( msg_chunks ) + 1 , "split" : True }
+ 231 kwargs [ "extra" ] [ "split_complete" ] = False
+ 232 for i , part in enumerate ( msg_chunks ) :
+ 233 kwargs [ "extra" ] [ "message_part" ] = i + 1
+ 234 super ( ) . log (
+ 235 level ,
+ 236 part ,
+ 237 * args ,
+ 238 ** kwargs , # pyright: ignore[reportArgumentType]
+ 239 )
+ 240 kwargs [ "extra" ] [ "message_part" ] = len ( msg_chunks ) + 1
+ 241 kwargs [ "extra" ] [ "split_complete" ] = True
+ 242 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 243
+ 244 def annotate ( self , * , persist : bool = False , ** kwargs : Any ) -> None :
+ 245 """Add an annotation to the filter."""
+ 246 if persist :
+ 247 self . filter . class_annotations . update ( kwargs )
+ 248 else :
+ 249 self . filter . annotations . update ( kwargs )
+ 250
+ 251
+ 252 class AnnotatedLogger :
+ 253 """Class that contains settings and the decorator method.
+ 254
+ 255 Args:
+ 256 ----
+ 257 annotations: Dictionary of annotations to be added to every log message
+ 258 plugins: list of plugins to use
+ 259
+ 260 Methods:
+ 261 -------
+ 262 annotate_logs: Decorator that will insert the `annotated_logger` argument if
+ 263 asked for in the method signature or let a provided AnnotatedAdapter to be
+ 264 passed. Creates a new AnnotatedAdapter instance for each invocation of a
+ 265 annotated function to isolate any annotations that are set during execution.
+ 266
+ 267 """
+ 268
+ 269 def __init__ ( # noqa: PLR0913
+ 270 self ,
+ 271 annotations : dict [ str , Any ] | None = None ,
+ 272 plugins : list [ BasePlugin ] | None = None ,
+ 273 max_length : int | None = None ,
+ 274 log_level : int = logging . INFO ,
+ 275 name : str = "annotated_logger" ,
+ 276 config : dict [ str , Any ] | Literal [ False ] | None = None ,
+ 277 ) -> None :
+ 278 """Store the settings.
+ 279
+ 280 Args:
+ 281 ----
+ 282 annotations: Dictionary of static annotations - default None
+ 283 plugins: List of plugins to be applied - default [BasePlugin]
+ 284 is created and used - default None
+ 285 max_length: Integer, maximum length of a message before it's broken into
+ 286 multiple message and log calls. - default None
+ 287 log_level: Integer, log level set for the shared root logger of the package.
+ 288 - default logging.INFO (20)
+ 289 name: Name of the shared root logger of the package. If more than one
+ 290 `AnnotatedLogger` object is created in a project this should be set,
+ 291 otherwise settings like level will be overwritten by the second to execute
+ 292 - default 'annotated_logger'
+ 293 config: Optional - logging config dictionary to be passed to
+ 294 logging.config.dictConfig or False. If false dictConfig will not be called.
+ 295 If not passed the DEFAULT_LOGGING_CONFIG will be used. A special
+ 296 `annotated_filter` keyword is looked for, if present it will be
+ 297 replaced with a `()` filter config to generate a filter for this
+ 298 instance of `AnnotatedLogger`.
+ 299
+ 300 """
+ 301 if plugins is None :
+ 302 plugins = [ ]
+ 303
+ 304 self . log_level = log_level
+ 305 self . logger_root_name = name
+ 306 self . logger_base = logging . getLogger ( self . logger_root_name )
+ 307 self . logger_base . setLevel ( self . log_level )
+ 308 self . annotations = annotations or { }
+ 309 self . plugins = [ BasePlugin ( ) ]
+ 310 self . plugins . extend ( plugins )
+ 311
+ 312 if config is None :
+ 313 config = deepcopy ( DEFAULT_LOGGING_CONFIG )
+ 314 if config :
+ 315 for config_filter in config [ "filters" ] . values ( ) :
+ 316 if config_filter . get ( "annotated_filter" ) :
+ 317 del config_filter [ "annotated_filter" ]
+ 318 config_filter [ "()" ] = self . generate_filter
+ 319
+ 320 # If we pass in config=False we don't want to configure.
+ 321 # This is typically because we have another AnnotatedLogger
+ 322 # object which did run the config and the dict config had config
+ 323 # for both.
+ 324 if config :
+ 325 logging . config . dictConfig ( config )
+ 326
+ 327 self . max_length = max_length
+ 328
+ 329 def _generate_logger (
+ 330 self ,
+ 331 function : Function [ S , P , R ] | None = None ,
+ 332 cls : type | None = None ,
+ 333 logger_base_name : str | None = None ,
+ 334 ) -> AnnotatedAdapter :
+ 335 """Generate a unique adapter with a unique logger object.
+ 336
+ 337 This is required because the AnnotatedAdapter adds a filter to the logger.
+ 338 The filter stores the annotations inside it, so they will mix if a new filter
+ 339 and logger are not created each time.
+ 340 """
+ 341 root_name = logger_base_name or self . logger_root_name
+ 342 logger = logging . getLogger (
+ 343 f" { root_name } . { uuid . uuid4 ( ) } " # pragma: no mutate
+ 344 )
+ 345
+ 346 annotated_filter = self . generate_filter ( function = function , cls = cls )
+ 347
+ 348 return AnnotatedAdapter ( logger , annotated_filter , self . max_length )
+ 349
+ 350 def _action_annotation (
+ 351 self , function : Function [ S , P , R ] , key : str = "action"
+ 352 ) -> dict [ str , str ] :
+ 353 return { key : f" { function . __module__ } : { function . __qualname__ } " }
+ 354
+ 355 def generate_filter (
+ 356 self ,
+ 357 function : Function [ S , P , R ] | None = None ,
+ 358 cls : type [ C_co ] | None = None ,
+ 359 annotations : dict [ str , Any ] | None = None ,
+ 360 ) -> AnnotatedFilter :
+ 361 """Create a AnnotatedFilter with the correct annotations and plugins."""
+ 362 annotations_passed = annotations
+ 363 annotations = annotations or { }
+ 364 if function :
+ 365 annotations . update ( self . _action_annotation ( function ) )
+ 366 class_annotations = { }
+ 367 elif cls :
+ 368 class_annotations = { "class" : f" { cls . __module__ } : { cls . __qualname__ } " }
+ 369 else :
+ 370 class_annotations = { }
+ 371 if not annotations_passed :
+ 372 annotations . update ( self . annotations )
+ 373
+ 374 return AnnotatedFilter (
+ 375 annotations = annotations ,
+ 376 class_annotations = class_annotations ,
+ 377 plugins = self . plugins ,
+ 378 )
+ 379
+ 380 #### Defaults
+ 381 @ overload
+ 382 def annotate_logs (
+ 383 self ,
+ 384 logger_name : str | None = None ,
+ 385 * ,
+ 386 success_info : bool = True , # pragma: no mutate
+ 387 pre_call : PreCall [ S2 , P2 ] = None ,
+ 388 post_call : PostCall [ S2 , P3 ] = None ,
+ 389 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 390
+ 391 @ overload
+ 392 def annotate_logs (
+ 393 self ,
+ 394 logger_name : str | None = None ,
+ 395 * ,
+ 396 success_info : bool = True , # pragma: no mutate
+ 397 pre_call : PreCall [ S2 , P2 ] = None ,
+ 398 post_call : PostCall [ S2 , P3 ] = None ,
+ 399 _typing_requested : Literal [ False ] ,
+ 400 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 401
+ 402 @ overload
+ 403 def annotate_logs (
+ 404 self ,
+ 405 logger_name : str | None = None ,
+ 406 * ,
+ 407 success_info : bool = True , # pragma: no mutate
+ 408 pre_call : PreCall [ S2 , P2 ] = None ,
+ 409 post_call : PostCall [ S2 , P3 ] = None ,
+ 410 provided : Literal [ False ] ,
+ 411 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 412
+ 413 @ overload
+ 414 def annotate_logs (
+ 415 self ,
+ 416 logger_name : str | None = None ,
+ 417 * ,
+ 418 success_info : bool = True , # pragma: no mutate
+ 419 pre_call : PreCall [ S2 , P2 ] = None ,
+ 420 post_call : PostCall [ S2 , P3 ] = None ,
+ 421 _typing_self : Literal [ True ] ,
+ 422 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 423
+ 424 @ overload
+ 425 def annotate_logs (
+ 426 self ,
+ 427 logger_name : str | None = None ,
+ 428 * ,
+ 429 success_info : bool = True , # pragma: no mutate
+ 430 pre_call : PreCall [ S2 , P2 ] = None ,
+ 431 post_call : PostCall [ S2 , P3 ] = None ,
+ 432 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 433
+ 434 @ overload
+ 435 def annotate_logs (
+ 436 self ,
+ 437 logger_name : str | None = None ,
+ 438 * ,
+ 439 success_info : bool = True , # pragma: no mutate
+ 440 pre_call : PreCall [ S2 , P2 ] = None ,
+ 441 post_call : PostCall [ S2 , P3 ] = None ,
+ 442 _typing_self : Literal [ True ] ,
+ 443 _typing_requested : Literal [ False ] ,
+ 444 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 445
+ 446 @ overload
+ 447 def annotate_logs (
+ 448 self ,
+ 449 logger_name : str | None = None ,
+ 450 * ,
+ 451 success_info : bool = True , # pragma: no mutate
+ 452 pre_call : PreCall [ S2 , P2 ] = None ,
+ 453 post_call : PostCall [ S2 , P3 ] = None ,
+ 454 provided : Literal [ False ] ,
+ 455 _typing_requested : Literal [ False ] ,
+ 456 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 457
+ 458 @ overload
+ 459 def annotate_logs (
+ 460 self ,
+ 461 logger_name : str | None = None ,
+ 462 * ,
+ 463 success_info : bool = True , # pragma: no mutate
+ 464 pre_call : PreCall [ S2 , P2 ] = None ,
+ 465 post_call : PostCall [ S2 , P3 ] = None ,
+ 466 _typing_self : Literal [ True ] ,
+ 467 provided : Literal [ False ] ,
+ 468 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 469
+ 470 @ overload
+ 471 def annotate_logs (
+ 472 self ,
+ 473 logger_name : str | None = None ,
+ 474 * ,
+ 475 success_info : bool = True , # pragma: no mutate
+ 476 pre_call : PreCall [ S2 , P2 ] = None ,
+ 477 post_call : PostCall [ S2 , P3 ] = None ,
+ 478 _typing_self : Literal [ True ] ,
+ 479 _typing_requested : Literal [ False ] ,
+ 480 provided : Literal [ False ] ,
+ 481 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 482
+ 483 #### Class True
+ 484 @ overload
+ 485 def annotate_logs (
+ 486 self ,
+ 487 logger_name : str | None = None ,
+ 488 * ,
+ 489 _typing_class : Literal [ True ] ,
+ 490 success_info : bool = True , # pragma: no mutate
+ 491 pre_call : PreCall [ S , P2 ] = None ,
+ 492 post_call : PostCall [ S , P3 ] = None ,
+ 493 ) -> Callable [ [ type [ C_co ] ] , type [ C_co ] ] : ...
+ 494
+ 495 ### Instance False
+ 496 @ overload
+ 497 def annotate_logs (
+ 498 self ,
+ 499 logger_name : str | None = None ,
+ 500 * ,
+ 501 success_info : bool = True , # pragma: no mutate
+ 502 pre_call : PreCall [ S2 , P2 ] = None ,
+ 503 post_call : PostCall [ S2 , P3 ] = None ,
+ 504 _typing_self : Literal [ False ] ,
+ 505 ) -> NoInjectionBare [ P , R ] : ...
+ 506
+ 507 @ overload
+ 508 def annotate_logs (
+ 509 self ,
+ 510 logger_name : str | None = None ,
+ 511 * ,
+ 512 success_info : bool = True , # pragma: no mutate
+ 513 pre_call : PreCall [ S2 , P2 ] = None ,
+ 514 post_call : PostCall [ S2 , P3 ] = None ,
+ 515 _typing_self : Literal [ False ] ,
+ 516 _typing_requested : Literal [ False ] ,
+ 517 ) -> NoInjectionBare [ P , R ] : ...
+ 518
+ 519 @ overload
+ 520 def annotate_logs (
+ 521 self ,
+ 522 logger_name : str | None = None ,
+ 523 * ,
+ 524 success_info : bool = True , # pragma: no mutate
+ 525 pre_call : PreCall [ S2 , P2 ] = None ,
+ 526 post_call : PostCall [ S2 , P3 ] = None ,
+ 527 _typing_self : Literal [ False ] ,
+ 528 provided : Literal [ False ] ,
+ 529 ) -> NoInjectionBare [ P , R ] : ...
+ 530
+ 531 @ overload
+ 532 def annotate_logs (
+ 533 self ,
+ 534 logger_name : str | None = None ,
+ 535 * ,
+ 536 success_info : bool = True , # pragma: no mutate
+ 537 pre_call : PreCall [ S2 , P2 ] = None ,
+ 538 post_call : PostCall [ S2 , P3 ] = None ,
+ 539 _typing_self : Literal [ False ] ,
+ 540 _typing_requested : Literal [ False ] ,
+ 541 provided : Literal [ False ] ,
+ 542 ) -> NoInjectionBare [ P , R ] : ...
+ 543
+ 544 ### Requested True
+ 545 @ overload
+ 546 def annotate_logs (
+ 547 self ,
+ 548 logger_name : str | None = None ,
+ 549 * ,
+ 550 success_info : bool = True , # pragma: no mutate
+ 551 pre_call : PreCall [ S2 , P2 ] = None ,
+ 552 post_call : PostCall [ S2 , P3 ] = None ,
+ 553 _typing_requested : Literal [ True ] ,
+ 554 ) -> InjectionSelf [ S , P , R ] : ...
+ 555
+ 556 @ overload
+ 557 def annotate_logs (
+ 558 self ,
+ 559 logger_name : str | None = None ,
+ 560 * ,
+ 561 success_info : bool = True , # pragma: no mutate
+ 562 pre_call : PreCall [ S2 , P2 ] = None ,
+ 563 post_call : PostCall [ S2 , P3 ] = None ,
+ 564 _typing_self : Literal [ True ] ,
+ 565 _typing_requested : Literal [ True ] ,
+ 566 ) -> InjectionSelf [ S , P , R ] : ...
+ 567
+ 568 @ overload
+ 569 def annotate_logs (
+ 570 self ,
+ 571 logger_name : str | None = None ,
+ 572 * ,
+ 573 success_info : bool = True , # pragma: no mutate
+ 574 pre_call : PreCall [ S2 , P2 ] = None ,
+ 575 post_call : PostCall [ S2 , P3 ] = None ,
+ 576 provided : Literal [ False ] ,
+ 577 _typing_requested : Literal [ True ] ,
+ 578 ) -> InjectionSelf [ S , P , R ] : ...
+ 579
+ 580 @ overload
+ 581 def annotate_logs (
+ 582 self ,
+ 583 logger_name : str | None = None ,
+ 584 * ,
+ 585 success_info : bool = True , # pragma: no mutate
+ 586 pre_call : PreCall [ S2 , P2 ] = None ,
+ 587 post_call : PostCall [ S2 , P3 ] = None ,
+ 588 _typing_self : Literal [ True ] ,
+ 589 _typing_requested : Literal [ True ] ,
+ 590 provided : Literal [ False ] ,
+ 591 ) -> InjectionSelf [ S , P , R ] : ...
+ 592
+ 593 ### Provided True, Requested True
+ 594 # Can't provide it if it was not requested,
+ 595 # so no overloads for not requested, but provided
+ 596 @ overload
+ 597 def annotate_logs (
+ 598 self ,
+ 599 logger_name : str | None = None ,
+ 600 * ,
+ 601 success_info : bool = True , # pragma: no mutate
+ 602 pre_call : PreCall [ S2 , P2 ] = None ,
+ 603 post_call : PostCall [ S2 , P3 ] = None ,
+ 604 _typing_requested : Literal [ True ] ,
+ 605 provided : Literal [ True ] ,
+ 606 ) -> InjectionSelfProvide [ S , P , R ] : ...
+ 607
+ 608 @ overload
+ 609 def annotate_logs (
+ 610 self ,
+ 611 logger_name : str | None = None ,
+ 612 * ,
+ 613 success_info : bool = True , # pragma: no mutate
+ 614 pre_call : PreCall [ S2 , P2 ] = None ,
+ 615 post_call : PostCall [ S2 , P3 ] = None ,
+ 616 _typing_self : Literal [ True ] ,
+ 617 _typing_requested : Literal [ True ] ,
+ 618 provided : Literal [ True ] ,
+ 619 ) -> InjectionSelfProvide [ S , P , R ] : ...
+ 620
+ 621 ### Instance False, Requested True
+ 622 @ overload
+ 623 def annotate_logs (
+ 624 self ,
+ 625 logger_name : str | None = None ,
+ 626 * ,
+ 627 success_info : bool = True , # pragma: no mutate
+ 628 pre_call : PreCall [ S2 , P2 ] = None ,
+ 629 post_call : PostCall [ S2 , P3 ] = None ,
+ 630 _typing_self : Literal [ False ] ,
+ 631 _typing_requested : Literal [ True ] ,
+ 632 ) -> InjectionBare [ P , R ] : ...
+ 633
+ 634 ### Instance False, Requested True, Provided True
+ 635 # Same not as above that you can't provide if not requested
+ 636 @ overload
+ 637 def annotate_logs (
+ 638 self ,
+ 639 logger_name : str | None = None ,
+ 640 * ,
+ 641 success_info : bool = True , # pragma: no mutate
+ 642 pre_call : PreCall [ S2 , P2 ] = None ,
+ 643 post_call : PostCall [ S2 , P2 ] = None ,
+ 644 _typing_self : Literal [ False ] ,
+ 645 _typing_requested : Literal [ True ] ,
+ 646 provided : Literal [ True ] ,
+ 647 ) -> InjectionBareProvide [ P , R ] : ...
+ 648
+ 649 # Between the overloads and the two inner method definitions,
+ 650 # there's not much I can do to reduce the complexity more.
+ 651 # So, ignoring the complexity metric
+ 652 def annotate_logs ( # noqa: C901
+ 653 self ,
+ 654 logger_name : str | None = None ,
+ 655 * ,
+ 656 success_info : bool = True ,
+ 657 pre_call : PreCall [ S2 , P2 ] = None ,
+ 658 post_call : PostCall [ S2 , P3 ] = None ,
+ 659 provided : bool = False ,
+ 660 _typing_self : bool = True , # pragma: no mutate
+ 661 _typing_requested : bool = False , # pragma: no mutate
+ 662 _typing_class : bool = False , # pragma: no mutate
+ 663 ) -> Decorator [ S , P , R ] | Callable [ [ type [ C_co ] ] , type [ C_co ] ] :
+ 664 """Log start and end of function and provide an annotated logger if requested.
+ 665
+ 666 Args:
+ 667 ----
+ 668 logger_name: Optional - Specify the name of the logger attached to
+ 669 the decorated function.
+ 670 success_info: Log success at an info level, if falsey success will be
+ 671 logged at debug. Default: True
+ 672 provided: Boolean that indicates the caller will be providing it's
+ 673 own annotated_logger. Default: False
+ 674 pre_call: Method that takes the same arguments as the decorated function
+ 675 and does something. Called before the function and the `start` log message.
+ 676 post_call: Method that takes the same arguments as the decorated function
+ 677 and does something. Called after the function and before the `success`
+ 678 log message or in the exception handling.
+ 679 _typing_self: Used only for type hint overloads. Indicates that the
+ 680 decorated method is an instance method and has a self parameter.
+ 681 Default: True
+ 682 _typing_requested: Used only for type hint overloads. Indicates that the
+ 683 decorated method is expecting an annotated_logger to be provided.
+ 684 Default: False
+ 685
+ 686 Notes:
+ 687 -----
+ 688 In order to fully support type hinting, the annotated_logger argument
+ 689 must be the first argument (after self/cls). Type hinting will only work
+ 690 correctly if the _typing arguments are set correctly, but the code will
+ 691 work fine at runtime without the _typing arguments.
+ 692
+ 693 """
+ 694
+ 695 @ overload
+ 696 def decorator (
+ 697 wrapped : SelfLoggerAndParams [ S , P , R ] ,
+ 698 ) -> SelfAndParams [ S , P , R ] | SelfLoggerAndParams [ S , P , R ] : ...
+ 699
+ 700 @ overload
+ 701 def decorator (
+ 702 wrapped : LoggerAndParams [ P , R ] ,
+ 703 ) -> ParamsOnly [ P , R ] | LoggerAndParams [ P , R ] : ...
+ 704
+ 705 @ overload
+ 706 def decorator (
+ 707 wrapped : SelfAndParams [ S , P , R ] ,
+ 708 ) -> SelfAndParams [ S , P , R ] : ...
+ 709
+ 710 @ overload
+ 711 def decorator (
+ 712 wrapped : ParamsOnly [ P , R ] ,
+ 713 ) -> ParamsOnly [ P , R ] | Empty [ R ] : ...
+ 714
+ 715 @ overload
+ 716 def decorator ( wrapped : type [ C_co ] ) -> Callable [ P , AnnotatedClass [ C_co ] ] : ...
+ 717
+ 718 def decorator ( # noqa: C901
+ 719 wrapped : Function [ S , P , R ] | type [ C_co ] ,
+ 720 ) -> Function [ S , P , R ] | Callable [ P , AnnotatedClass [ C_co ] ] :
+ 721 if isinstance ( wrapped , type ) :
+ 722
+ 723 def wrap_class (
+ 724 * args : P . args , ** kwargs : P . kwargs
+ 725 ) -> AnnotatedClass [ C_co ] :
+ 726 logger = self . _generate_logger (
+ 727 cls = wrapped , logger_base_name = logger_name
+ 728 )
+ 729 logger . debug ( "init" )
+ 730 new = cast ( AnnotatedClass [ C_co ] , wrapped ( * args , ** kwargs ) )
+ 731 new . annotated_logger = logger
+ 732 return new
+ 733
+ 734 return wrap_class
+ 735
+ 736 ( remove_args , inject_logger ) = self . _determine_signature_adjustments (
+ 737 wrapped , provided = provided
+ 738 )
+ 739
+ 740 @ wraps (
+ 741 wrapped ,
+ 742 remove_args = remove_args ,
+ 743 )
+ 744 def wrap_function ( * args : P . args , ** kwargs : P . kwargs ) -> R :
+ 745 __tracebackhide__ = True # pragma: no mutate
+ 746
+ 747 post_call_attempted = False # pragma: no mutate
+ 748
+ 749 new_args , new_kwargs , logger , pre_execution_annotations = inject_logger (
+ 750 list ( args ) , kwargs , logger_base_name = logger_name
+ 751 )
+ 752 try :
+ 753 start_time = time . perf_counter ( )
+ 754 if pre_call :
+ 755 pre_call ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 756 logger . debug ( "start" )
+ 757
+ 758 result = wrapped ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 759 logger . annotate ( success = True )
+ 760 if post_call :
+ 761 post_call_attempted = True
+ 762 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 763 end_time = time . perf_counter ( )
+ 764 logger . annotate ( run_time = f" { end_time - start_time : .1f } " )
+ 765 with contextlib . suppress ( TypeError ) :
+ 766 logger . annotate ( count = len ( result ) ) # pyright: ignore[reportArgumentType]
+ 767
+ 768 if success_info :
+ 769 logger . info ( "success" )
+ 770 else :
+ 771 logger . debug ( "success" )
+ 772
+ 773 # If we were provided with a logger object, set the annotations
+ 774 # back to what they were before the wrapped method was called.
+ 775 if pre_execution_annotations :
+ 776 logger . filter . annotations = pre_execution_annotations
+ 777 except Exception as e :
+ 778 for plugin in logger . filter . plugins :
+ 779 logger = plugin . uncaught_exception ( e , logger )
+ 780 logger . exception (
+ 781 "Uncaught Exception in logged function" ,
+ 782 )
+ 783 if post_call and not post_call_attempted :
+ 784 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 785 raise
+ 786 return result
+ 787
+ 788 return wrap_function
+ 789
+ 790 return decorator
+ 791
+ 792 def _determine_signature_adjustments (
+ 793 self ,
+ 794 function : Function [ S , P , R ] ,
+ 795 * ,
+ 796 provided : bool ,
+ 797 ) -> tuple [
+ 798 list [ str ] ,
+ 799 Callable [
+ 800 Concatenate [ list [ Any ] , dict [ str , Any ] , ... ] ,
+ 801 tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] ,
+ 802 ] ,
+ 803 ] :
+ 804 written_signature = inspect . signature ( function )
+ 805 logger_requested = False # pragma: no mutate
+ 806 remove_args = [ ]
+ 807 index , instance_method = self . _check_parameters_for_self_and_cls (
+ 808 written_signature
+ 809 )
+ 810 if "annotated_logger" in written_signature . parameters :
+ 811 if list ( written_signature . parameters . keys ( ) ) [ index ] != "annotated_logger" :
+ 812 error_message = "annotated_logger must be the first argument"
+ 813 raise TypeError ( error_message )
+ 814
+ 815 logger_requested = True
+ 816 if not provided :
+ 817 remove_args = [ "annotated_logger" ]
+ 818
+ 819 def inject_logger (
+ 820 args : list [ Any ] ,
+ 821 kwargs : dict [ str , Any ] ,
+ 822 logger_base_name : str | None = None ,
+ 823 ) -> tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] :
+ 824 if not logger_requested :
+ 825 logger = self . _generate_logger (
+ 826 function , logger_base_name = logger_base_name
+ 827 )
+ 828 return ( args , kwargs , logger , None )
+ 829
+ 830 by_index = False # pragma: no mutate
+ 831 # Check for a var positional or positional only
+ 832 # If present that means we'll have values in args when invoking
+ 833 # but, if not everything will be in kwargs
+ 834 for v in written_signature . parameters . values ( ) :
+ 835 if v . kind == inspect . Parameter . VAR_POSITIONAL :
+ 836 by_index = True
+ 837
+ 838 new_args = copy ( args )
+ 839 new_kwargs = copy ( kwargs )
+ 840 if by_index :
+ 841 logger , annotations , new_args = self . _inject_by_index (
+ 842 provided = provided ,
+ 843 instance_method = instance_method ,
+ 844 args = new_args ,
+ 845 index = index ,
+ 846 function = function ,
+ 847 logger_base_name = logger_base_name ,
+ 848 )
+ 849 else :
+ 850 logger , annotations , new_kwargs = self . _inject_by_kwarg (
+ 851 provided = provided ,
+ 852 instance_method = instance_method ,
+ 853 kwargs = new_kwargs ,
+ 854 function = function ,
+ 855 logger_base_name = logger_base_name ,
+ 856 )
+ 857
+ 858 return new_args , new_kwargs , logger , annotations
+ 859
+ 860 return remove_args , inject_logger
+ 861
+ 862 def _inject_by_kwarg (
+ 863 self ,
+ 864 * ,
+ 865 provided : bool ,
+ 866 instance_method : bool ,
+ 867 function : Function [ S , P , R ] ,
+ 868 kwargs : dict [ str , Any ] ,
+ 869 logger_base_name : str | None = None ,
+ 870 ) -> tuple [ AnnotatedAdapter , Annotations | None , dict [ str , Any ] ] :
+ 871 if provided :
+ 872 instance = kwargs [ "annotated_logger" ]
+ 873 elif instance_method :
+ 874 instance = kwargs [ "self" ]
+ 875 else :
+ 876 instance = False # pragma: no mutate
+ 877 logger , annotations = self . _pick_correct_logger (
+ 878 function , instance , logger_base_name = logger_base_name
+ 879 )
+ 880 if not provided :
+ 881 kwargs [ "annotated_logger" ] = logger
+ 882
+ 883 return logger , annotations , kwargs
+ 884
+ 885 def _inject_by_index ( # noqa: PLR0913
+ 886 self ,
+ 887 * ,
+ 888 provided : bool ,
+ 889 instance_method : bool ,
+ 890 function : Function [ S , P , R ] ,
+ 891 args : list [ Any ] ,
+ 892 index : int ,
+ 893 logger_base_name : str | None = None ,
+ 894 ) -> tuple [ AnnotatedAdapter , Annotations | None , list [ Any ] ] :
+ 895 if provided :
+ 896 instance = args [ index ]
+ 897 elif instance_method :
+ 898 instance = args [ 0 ]
+ 899 else :
+ 900 instance = False # pragma: no mutate
+ 901 logger , annotations = self . _pick_correct_logger (
+ 902 function , instance , logger_base_name = logger_base_name
+ 903 )
+ 904 if not provided :
+ 905 args . insert ( index , logger )
+ 906 return logger , annotations , args
+ 907
+ 908 def _check_parameters_for_self_and_cls (
+ 909 self , sig : inspect . Signature
+ 910 ) -> tuple [ int , bool ] :
+ 911 parameters = sig . parameters
+ 912 index = 0
+ 913 instance_method = False
+ 914 if "self" in parameters :
+ 915 index = 1
+ 916 instance_method = True
+ 917 if "cls" in parameters :
+ 918 index = 1
+ 919
+ 920 return index , instance_method
+ 921
+ 922 def _pick_correct_logger (
+ 923 self ,
+ 924 function : Function [ S , P , R ] ,
+ 925 instance : object | bool ,
+ 926 logger_base_name : str | None = None ,
+ 927 ) -> tuple [ AnnotatedAdapter , Annotations | None ] :
+ 928 """Use the instance's logger and annotations if present."""
+ 929 if instance and hasattr ( instance , "annotated_logger" ) :
+ 930 logger = instance . annotated_logger # pyright: ignore[reportAttributeAccessIssue]
+ 931 annotations = copy ( logger . filter . annotations )
+ 932 logger . filter . annotations . update ( self . _action_annotation ( function ) )
+ 933 return ( logger , annotations )
+ 934
+ 935 if isinstance ( instance , AnnotatedAdapter ) :
+ 936 logger = instance
+ 937 annotations = copy ( logger . filter . annotations )
+ 938 logger . filter . annotations . update (
+ 939 self . _action_annotation ( function , key = "subaction" )
+ 940 )
+ 941 return ( logger , annotations )
+ 942
+ 943 return (
+ 944 self . _generate_logger ( function , logger_base_name = logger_base_name ) ,
+ 945 None ,
+ 946 )
+ 947
+ 948
+ 949 def _attempt_post_call (
+ 950 post_call : Callable [ P , None ] ,
+ 951 logger : AnnotatedAdapter ,
+ 952 * args : P . args ,
+ 953 ** kwargs : P . kwargs ,
+ 954 ) -> None :
+ 955 try :
+ 956 if post_call :
+ 957 post_call ( * args , ** kwargs ) # pyright: ignore[reportCallIssue]
+ 958 except Exception :
+ 959 logger . annotate ( success = False )
+ 960 logger . exception ( "Post call failed" )
+ 961 raise
+
+
+
+
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
new file mode 100644
index 0000000..6161184
--- /dev/null
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -0,0 +1,155 @@
+
+
+
+
+ Coverage for annotated_logger/filter.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import logging
+ 4 from copy import copy
+ 5 from typing import Any
+ 6
+ 7 import annotated_logger
+ 8
+ 9 Annotations = dict [ str , Any ]
+ 10
+ 11
+ 12 class AnnotatedFilter ( logging . Filter ) :
+ 13 """Filter class that stores the annotations and plugins."""
+ 14
+ 15 def __init__ (
+ 16 self ,
+ 17 annotations : Annotations | None = None ,
+ 18 class_annotations : Annotations | None = None ,
+ 19 plugins : list [ annotated_logger . BasePlugin ] | None = None ,
+ 20 ) -> None :
+ 21 """Store the annotations, attributes and plugins."""
+ 22 self . annotations = annotations or { }
+ 23 self . class_annotations = class_annotations or { }
+ 24 self . plugins = plugins or [ annotated_logger . BasePlugin ( ) ]
+ 25
+ 26 # This allows plugins to determine what fields were added by the user
+ 27 # vs the ones native to the log record
+ 28 # TODO(crimsonknave): Make a test for this # noqa: TD003, FIX002
+ 29 self . base_attributes = logging . makeLogRecord ( { } ) . __dict__ # pragma: no mutate
+ 30
+ 31 def _all_annotations ( self ) -> Annotations :
+ 32 annotations = { }
+ 33 annotations . update ( copy ( self . class_annotations ) )
+ 34 annotations . update ( copy ( self . annotations ) )
+ 35 annotations [ "annotated" ] = True
+ 36 return annotations
+ 37
+ 38 def filter ( self , record : logging . LogRecord ) -> bool :
+ 39 """Add the annotations to the record and allow plugins to filter the record.
+ 40
+ 41 The `filter` method is called on each plugin in the order they are listed.
+ 42 The plugin is then able to maniuplate the record object before the next plugin
+ 43 sees it. Returning False from the filter method will stop the evaluation and
+ 44 the log record won't be emitted.
+ 45 """
+ 46 record . __dict__ . update ( self . _all_annotations ( ) )
+ 47 for plugin in self . plugins :
+ 48 try :
+ 49 result = plugin . filter ( record )
+ 50 except Exception : # noqa: BLE001
+ 51 failed_plugins = record . __dict__ . get ( "failed_plugins" , [ ] )
+ 52 failed_plugins . append ( str ( plugin . __class__ ) )
+ 53 record . __dict__ [ "failed_plugins" ] = failed_plugins
+ 54 result = True
+ 55
+ 56 if not result :
+ 57 return False
+ 58 return True
+
+
+
+
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
new file mode 100644
index 0000000..ec05559
--- /dev/null
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -0,0 +1,350 @@
+
+
+
+
+ Coverage for annotated_logger/mocks.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import logging
+ 4 from typing import Any , Literal
+ 5
+ 6 import pychoir
+ 7 import pytest
+ 8
+ 9
+ 10 class AssertLogged :
+ 11 """Stores the data from a call to `assert_logged` and checks if there is a match."""
+ 12
+ 13 def __init__ (
+ 14 self ,
+ 15 level : str | pychoir . core . Matcher ,
+ 16 message : str | pychoir . core . Matcher ,
+ 17 present : dict [ str , str ] ,
+ 18 absent : set [ str ] | Literal [ "ALL" ] ,
+ 19 * ,
+ 20 count : int | pychoir . core . Matcher ,
+ 21 ) -> None :
+ 22 """Store the arguments that were passed to `assert_logged` and set defaults."""
+ 23 self . level = level
+ 24 self . message = message
+ 25 self . present = present
+ 26 self . absent = absent
+ 27 self . count = count
+ 28 self . found = 0
+ 29 self . failed_matches : dict [ str , int ] = { }
+ 30
+ 31 def check ( self , mock : AnnotatedLogMock ) -> None :
+ 32 """Loop through calls in passed mock and check for matches."""
+ 33 for record in mock . records :
+ 34 differences = self . _check_record_matches ( record )
+ 35 if len ( differences ) == 0 :
+ 36 self . found = self . found + 1
+ 37 diff_str = str ( differences )
+ 38 if diff_str in self . failed_matches :
+ 39 self . failed_matches [ diff_str ] += 1
+ 40 else :
+ 41 self . failed_matches [ diff_str ] = 1
+ 42
+ 43 fail_message = self . build_message ( )
+ 44 if len ( fail_message ) > 0 :
+ 45 pytest . fail ( "\n" . join ( fail_message ) )
+ 46
+ 47 def _failed_sort_key ( self , failed_tuple : tuple [ str , int ] ) -> str :
+ 48 failed , count = failed_tuple
+ 49 message_match = failed . count ( "Desired message" )
+ 50 count_diff = 0 # pragma: no mutate
+ 51 if isinstance ( self . count , int ) :
+ 52 count_diff = abs ( count - self . count )
+ 53 number = (
+ 54 failed . count ( "Desired" )
+ 55 + failed . count ( "Missing key" )
+ 56 + failed . count ( "Unwanted key" )
+ 57 )
+ 58 length = len ( failed )
+ 59 # This will order by if the message matched then how the count differs
+ 60 # then number of incorrect bits and finally the length
+ 61 return f" { message_match } - { count_diff : 04d } - { number : 04d } - { length : 04d } " # pragma: no mutate # noqa: E501
+ 62
+ 63 def build_message ( self ) -> list [ str ] :
+ 64 """Create failure message."""
+ 65 if self . count == 0 and self . found == 0 :
+ 66 return [ ]
+ 67 if self . found == 0 :
+ 68 fail_message = [
+ 69 f" No matching log record found. There were { sum ( self . failed_matches . values ( ) ) } log messages. " , # noqa: E501
+ 70 ]
+ 71
+ 72 fail_message . append ( "Desired:" )
+ 73 if isinstance ( self . count , int ) :
+ 74 fail_message . append ( f" Count: { self . count } " )
+ 75 fail_message . append ( f" Message: ' { self . message } ' " )
+ 76 fail_message . append ( f" Level: ' { self . level } ' " )
+ 77 # only put in these if they were specified
+ 78 fail_message . append ( f" Present: ' { self . present } ' " )
+ 79 fail_message . append ( f" Absent: ' { self . absent } ' " )
+ 80 fail_message . append ( "" )
+ 81
+ 82 if len ( self . failed_matches ) == 0 :
+ 83 return fail_message
+ 84 fail_message . append (
+ 85 "Below is a list of the values for the selected extras for those failed matches." , # noqa: E501
+ 86 )
+ 87 for match , count in sorted (
+ 88 self . failed_matches . items ( ) , key = self . _failed_sort_key
+ 89 ) :
+ 90 msg = match
+ 91 if self . count and self . count != count :
+ 92 msg = (
+ 93 match [ : - 1 ]
+ 94 + f' , "Desired { self . count } call { "" if self . count == 1 else "s" } , actual { count } call { "" if count == 1 else "s" } " ' # noqa: E501
+ 95 + match [ - 1 : ]
+ 96 )
+ 97 fail_message . append ( msg )
+ 98 return fail_message
+ 99
+ 100 if self . count != self . found :
+ 101 return [ f" Found { self . found } matching messages, { self . count } were desired " ]
+ 102 return [ ]
+ 103
+ 104 def _check_record_matches (
+ 105 self ,
+ 106 record : logging . LogRecord ,
+ 107 ) -> list [ str ] :
+ 108 differences = [ ]
+ 109 # `levelname` is often renamed. But, `levelno` shouldn't be touched as often
+ 110 # So, don't try to guess what the level name is, just use the levelno.
+ 111 level = {
+ 112 logging . DEBUG : "DEBUG" ,
+ 113 logging . INFO : "INFO" ,
+ 114 logging . WARNING : "WARNING" ,
+ 115 logging . ERROR : "ERROR" ,
+ 116 } [ record . levelno ]
+ 117 actual = {
+ 118 "level" : level ,
+ 119 "msg" : record . msg ,
+ 120 # The extras are already added as attributes, so this is the easiest way
+ 121 # to get them. There are more things in here, but that should be fine
+ 122 "extra" : record . __dict__ ,
+ 123 }
+ 124
+ 125 if self . level != actual [ "level" ] :
+ 126 differences . append (
+ 127 f" Desired level: { self . level } , actual level: { actual [ 'level' ] } " ,
+ 128 )
+ 129 # TODO @<crimsonknave>: Do a better string diff here # noqa: FIX002, TD003
+ 130 if self . message != actual [ "msg" ] :
+ 131 differences . append (
+ 132 f" Desired message: ' { self . message } ', actual message: ' { actual [ 'msg' ] } ' " ,
+ 133 )
+ 134
+ 135 actual_keys = set ( actual [ "extra" ] . keys ( ) )
+ 136 desired_keys = set ( self . present . keys ( ) )
+ 137
+ 138 missing = desired_keys - actual_keys
+ 139 unwanted = set ( )
+ 140 if self . absent == AnnotatedLogMock . ALL :
+ 141 unwanted = actual_keys - AnnotatedLogMock . DEFAULT_LOG_KEYS
+ 142 elif isinstance ( self . absent , set ) :
+ 143 unwanted = actual_keys & self . absent
+ 144 shared = desired_keys & actual_keys
+ 145 differences . extend ( [ f" Missing key: ` { key } ` " for key in sorted ( missing ) ] )
+ 146
+ 147 differences . extend ( [ f" Unwanted key: ` { key } ` " for key in sorted ( unwanted ) ] )
+ 148
+ 149 differences . extend (
+ 150 [
+ 151 f" Extra ` { key } ` value is incorrect. Desired ` { self . present [ key ] } ` ( { self . present [ key ] . __class__ } ) , actual ` { actual [ 'extra' ] [ key ] } ` ( { actual [ 'extra' ] [ key ] . __class__ } ) " # noqa: E501
+ 152 for key in sorted ( shared )
+ 153 if self . present [ key ] != actual [ "extra" ] [ key ]
+ 154 ]
+ 155 )
+ 156 return differences
+ 157
+ 158
+ 159 class AnnotatedLogMock ( logging . Handler ) :
+ 160 """Mock that captures logs and provides extra assertion logic."""
+ 161
+ 162 ALL = "ALL"
+ 163 DEFAULT_LOG_KEYS = frozenset (
+ 164 [
+ 165 "action" ,
+ 166 "annotated" ,
+ 167 "args" ,
+ 168 "created" ,
+ 169 "exc_info" ,
+ 170 "exc_text" ,
+ 171 "filename" ,
+ 172 "funcName" ,
+ 173 "levelname" ,
+ 174 "levelno" ,
+ 175 "lineno" ,
+ 176 "message" ,
+ 177 "module" ,
+ 178 "msecs" ,
+ 179 "msg" ,
+ 180 "name" ,
+ 181 "pathname" ,
+ 182 "process" ,
+ 183 "processName" ,
+ 184 "relativeCreated" ,
+ 185 "stack_info" ,
+ 186 "thread" ,
+ 187 "threadName" ,
+ 188 ]
+ 189 )
+ 190
+ 191 def __init__ ( self , handler : logging . Handler ) -> None :
+ 192 """Store the handler and initialize the messages and records lists."""
+ 193 self . messages = [ ]
+ 194 self . records = [ ]
+ 195 self . handler = handler
+ 196
+ 197 def __getattr__ ( self , name : str ) -> Any : # noqa: ANN401
+ 198 """Fall back to the real handler object."""
+ 199 return getattr ( self . handler , name )
+ 200
+ 201 def handle ( self , record : logging . LogRecord ) -> bool :
+ 202 """Wrap the real handle method, store the formatted message and log record."""
+ 203 self . messages . append ( self . handler . format ( record ) )
+ 204 self . records . append ( record )
+ 205 return self . handler . handle ( record )
+ 206
+ 207 def assert_logged (
+ 208 self ,
+ 209 level : str | pychoir . core . Matcher | None = None ,
+ 210 message : str | pychoir . core . Matcher | None = None ,
+ 211 present : dict [ str , Any ] | None = None ,
+ 212 absent : str | set [ str ] | list [ str ] | None = None ,
+ 213 count : int | pychoir . core . Matcher | None = None ,
+ 214 ) -> None :
+ 215 """Check if the mock received a log call that matches the arguments."""
+ 216 if level is None :
+ 217 level = pychoir . existential . Anything ( )
+ 218 elif isinstance ( level , str ) :
+ 219 level = level . upper ( )
+ 220 if message is None :
+ 221 message = pychoir . existential . Anything ( )
+ 222 if present is None :
+ 223 present = { }
+ 224 if absent is None :
+ 225 absent = [ ]
+ 226 if isinstance ( absent , list ) :
+ 227 absent = set ( absent )
+ 228 if isinstance ( absent , str ) and absent != "ALL" :
+ 229 absent = { absent }
+ 230 if count is None :
+ 231 count = pychoir . numeric . IsPositive ( )
+ 232 __tracebackhide__ = True # pragma: no mutate
+ 233 assert_logged = AssertLogged ( level , message , present , absent , count = count )
+ 234 assert_logged . check ( self )
+ 235
+ 236
+ 237 @ pytest . fixture ( )
+ 238 def annotated_logger_object ( ) -> logging . Logger :
+ 239 """Logger to wrap with the `annotated_logger_mock` fixture."""
+ 240 return logging . getLogger ( "annotated_logger" )
+ 241
+ 242
+ 243 @ pytest . fixture ( )
+ 244 def annotated_logger_mock ( annotated_logger_object : logging . Logger ) -> AnnotatedLogMock :
+ 245 """Fixture for a mock of the annotated logger."""
+ 246 handler = annotated_logger_object . handlers [ 0 ]
+ 247 annotated_logger_object . removeHandler ( handler )
+ 248 mock_handler = AnnotatedLogMock (
+ 249 handler = handler ,
+ 250 )
+ 251
+ 252 annotated_logger_object . addHandler ( mock_handler )
+ 253 return mock_handler
+
+
+
+
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
new file mode 100644
index 0000000..5fd7691
--- /dev/null
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -0,0 +1,305 @@
+
+
+
+
+ Coverage for annotated_logger/plugins.py: 100%
+
+
+
+
+
+
+
+ 1 from __future__ import annotations
+ 2
+ 3 import contextlib
+ 4 import logging
+ 5 from typing import TYPE_CHECKING , Any , Callable
+ 6
+ 7 from requests . exceptions import HTTPError
+ 8
+ 9 from annotated_logger . filter import AnnotatedFilter
+ 10
+ 11 if TYPE_CHECKING : # pragma: no cover
+ 12 from annotated_logger import AnnotatedAdapter
+ 13
+ 14
+ 15 class BasePlugin :
+ 16 """Base class for plugins."""
+ 17
+ 18 def filter ( self , _record : logging . LogRecord ) -> bool :
+ 19 """Determine if the record should be sent."""
+ 20 return True
+ 21
+ 22 def uncaught_exception (
+ 23 self , exception : Exception , logger : AnnotatedAdapter
+ 24 ) -> AnnotatedAdapter :
+ 25 """Handle an uncaught excaption."""
+ 26 if "success" not in logger . filter . annotations :
+ 27 logger . annotate ( success = False )
+ 28 if "exception_title" not in logger . filter . annotations :
+ 29 logger . annotate ( exception_title = str ( exception ) )
+ 30 return logger
+ 31
+ 32
+ 33 class RuntimeAnnotationsPlugin ( BasePlugin ) :
+ 34 """Plugin that sets annotations dynamically."""
+ 35
+ 36 def __init__ (
+ 37 self , runtime_annotations : dict [ str , Callable [ [ logging . LogRecord ] , Any ] ]
+ 38 ) -> None :
+ 39 """Store the runtime annotations."""
+ 40 self . runtime_annotations = runtime_annotations
+ 41
+ 42 def filter ( self , record : logging . LogRecord ) -> bool :
+ 43 """Add any configured runtime annotations."""
+ 44 for key , function in self . runtime_annotations . items ( ) :
+ 45 record . __dict__ [ key ] = function ( record )
+ 46 return True
+ 47
+ 48
+ 49 class RequestsPlugin ( BasePlugin ) :
+ 50 """Plugin for the requests library."""
+ 51
+ 52 def uncaught_exception (
+ 53 self , exception : Exception , logger : AnnotatedAdapter
+ 54 ) -> AnnotatedAdapter :
+ 55 """Add the status code if possible."""
+ 56 if isinstance ( exception , HTTPError ) and exception . response is not None :
+ 57 logger . annotate ( status_code = exception . response . status_code )
+ 58 logger . annotate ( exception_title = exception . response . reason )
+ 59 return logger
+ 60
+ 61
+ 62 class RenamerPlugin ( BasePlugin ) :
+ 63 """Plugin that prevents name collisions."""
+ 64
+ 65 class FieldNotPresentError ( Exception ) :
+ 66 """Exception for a field that is supposed to be renamed, but is not present."""
+ 67
+ 68 def __init__ ( self , * , strict : bool = False , ** kwargs : str ) -> None :
+ 69 """Store the list of names to rename and pre/post fixs."""
+ 70 self . targets = kwargs
+ 71 self . strict = strict
+ 72
+ 73 def filter ( self , record : logging . LogRecord ) -> bool :
+ 74 """Adjust the name of any fields that match a provided list if they exist."""
+ 75 for new , old in self . targets . items ( ) :
+ 76 if old in record . __dict__ :
+ 77 record . __dict__ [ new ] = record . __dict__ [ old ]
+ 78 del record . __dict__ [ old ]
+ 79 elif self . strict :
+ 80 raise RenamerPlugin . FieldNotPresentError ( old )
+ 81 return True
+ 82
+ 83
+ 84 class RemoverPlugin ( BasePlugin ) :
+ 85 """Plugin that removed fields."""
+ 86
+ 87 def __init__ ( self , targets : list [ str ] | str ) -> None :
+ 88 """Store the list of names to remove."""
+ 89 if isinstance ( targets , str ) :
+ 90 targets = [ targets ]
+ 91 self . targets = targets
+ 92
+ 93 def filter ( self , record : logging . LogRecord ) -> bool :
+ 94 """Remove the specified fields."""
+ 95 for target in self . targets :
+ 96 with contextlib . suppress ( KeyError ) :
+ 97 del record . __dict__ [ target ]
+ 98 return True
+ 99
+ 100
+ 101 class NameAdjusterPlugin ( BasePlugin ) :
+ 102 """Plugin that prevents name collisions with splunk field names."""
+ 103
+ 104 def __init__ ( self , names : list [ str ] , prefix : str = "" , postfix : str = "" ) -> None :
+ 105 """Store the list of names to rename and pre/post fixs."""
+ 106 self . names = names
+ 107 self . prefix = prefix
+ 108 self . postfix = postfix
+ 109
+ 110 def filter ( self , record : logging . LogRecord ) -> bool :
+ 111 """Adjust the name of any fields that match a provided list."""
+ 112 for name in self . names :
+ 113 if name in record . __dict__ :
+ 114 value = record . __dict__ [ name ]
+ 115 del record . __dict__ [ name ]
+ 116 record . __dict__ [ f" { self . prefix } { name } { self . postfix } " ] = value
+ 117 return True
+ 118
+ 119
+ 120 class NestedRemoverPlugin ( BasePlugin ) :
+ 121 """Plugin that removes nested fields."""
+ 122
+ 123 def __init__ ( self , keys_to_remove : list [ str ] ) -> None :
+ 124 """Store the list of keys to remove."""
+ 125 self . keys_to_remove = keys_to_remove
+ 126
+ 127 def filter ( self , record : logging . LogRecord ) -> bool :
+ 128 """Remove the specified fields."""
+ 129
+ 130 def delete_keys_nested (
+ 131 target : dict , # pyright: ignore[reportMissingTypeArgument]
+ 132 keys_to_remove : list , # pyright: ignore[reportMissingTypeArgument]
+ 133 ) -> dict : # pyright: ignore[reportMissingTypeArgument]
+ 134 for key in keys_to_remove :
+ 135 with contextlib . suppress ( KeyError ) :
+ 136 del target [ key ]
+ 137 for value in target . values ( ) :
+ 138 if isinstance ( value , dict ) :
+ 139 delete_keys_nested ( value , keys_to_remove )
+ 140 return target
+ 141
+ 142 record . __dict__ = delete_keys_nested ( record . __dict__ , self . keys_to_remove )
+ 143 return True
+ 144
+ 145
+ 146 class GitHubActionsPlugin ( BasePlugin ) :
+ 147 """Plugin that will format log messages for actions annotations."""
+ 148
+ 149 def __init__ ( self , annotation_level : int ) -> None :
+ 150 """Save the annotation level."""
+ 151 self . annotation_level = annotation_level
+ 152 self . base_attributes = logging . makeLogRecord ( { } ) . __dict__ # pragma: no mutate
+ 153 self . attributes_to_exclude = { "annotated" }
+ 154
+ 155 def filter ( self , record : logging . LogRecord ) -> bool :
+ 156 """Set the actions command to be an annotation if desired."""
+ 157 if record . levelno < self . annotation_level :
+ 158 return False
+ 159
+ 160 added_attributes = {
+ 161 k : v
+ 162 for k , v in record . __dict__ . items ( )
+ 163 if k not in self . base_attributes and k not in self . attributes_to_exclude
+ 164 }
+ 165 record . added_attributes = added_attributes
+ 166 name = record . levelname . lower ( )
+ 167 if name == "info" : # pragma: no cover
+ 168 name = "notice"
+ 169 record . github_annotation = f" { name } :: "
+ 170
+ 171 return True
+ 172
+ 173 def logging_config ( self ) -> dict [ str , dict [ str , object ] ] :
+ 174 """Generate the default logging config for the plugin."""
+ 175 return {
+ 176 "handlers" : {
+ 177 "actions_handler" : {
+ 178 "class" : "logging.StreamHandler" ,
+ 179 "filters" : [ "actions_filter" ] ,
+ 180 "formatter" : "actions_formatter" ,
+ 181 } ,
+ 182 } ,
+ 183 "filters" : {
+ 184 "actions_filter" : {
+ 185 "()" : AnnotatedFilter ,
+ 186 "plugins" : [
+ 187 BasePlugin ( ) ,
+ 188 self ,
+ 189 ] ,
+ 190 } ,
+ 191 } ,
+ 192 "formatters" : {
+ 193 "actions_formatter" : {
+ 194 "format" : "{github_annotation} {message} - {added_attributes}" ,
+ 195 "style" : "{" ,
+ 196 } ,
+ 197 } ,
+ 198 "loggers" : {
+ 199 "annotated_logger.actions" : {
+ 200 "level" : "DEBUG" ,
+ 201 "handlers" : [
+ 202 # This is from the default logging config
+ 203 # "annotated_handler",
+ 204 "actions_handler" ,
+ 205 ] ,
+ 206 } ,
+ 207 } ,
+ 208 }
+
+
+
+
From f3977f916f769c760a44d1306fcf193c2cf7ca03 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 21:46:16 +0000
Subject: [PATCH 03/11] Update coverage data
---
data.json | 2 +-
htmlcov/class_index.html | 4 ++--
htmlcov/function_index.html | 4 ++--
htmlcov/index.html | 4 ++--
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 ++--
htmlcov/z_70983d692f648185_api_py.html | 4 ++--
htmlcov/z_70983d692f648185_calculator_py.html | 4 ++--
htmlcov/z_70983d692f648185_default_py.html | 4 ++--
htmlcov/z_70983d692f648185_invalid_order_py.html | 4 ++--
htmlcov/z_70983d692f648185_logging_config_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a___init___py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_mocks_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 ++--
15 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/data.json b/data.json
index 61fdc6c..a937e23 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T21:45:44.542119", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T21:46:14.785613", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index b49b2f7..8d7d5bc 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index 297b12e..0a61e23 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index c5ecb48..921de7a 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index f26bcb1..ba88be6 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"7b6dce8de02cf55ec901735aafdf2292","files":{"z_beb44c9891d1179a___init___py":{"hash":"aed0c62127a900a681a5da50c59ddbe2","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":313,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"5bc132f4e51702302e6399a78f8dc03b","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"474fa3688db248836bda2750e6a4efc6","files":{"z_beb44c9891d1179a___init___py":{"hash":"aed0c62127a900a681a5da50c59ddbe2","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":313,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"5bc132f4e51702302e6399a78f8dc03b","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index efb9e27..5a3a3cf 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index 8e67c6e..48db54d 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index 89ee5e9..01a7624 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index 1e62cfe..7611906 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index 52d8430..1121bbe 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index abea927..6f6d5a6 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index 34d7937..b61f3a7 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -1050,7 +1050,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index 6161184..ded6f85 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index ec05559..3544cfc 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -342,7 +342,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
index 5fd7691..58e5f8d 100644
--- a/htmlcov/z_beb44c9891d1179a_plugins_py.html
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
@@ -297,7 +297,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:45 +0000
+ created at 2024-12-11 21:46 +0000
From a02d39333fdf519e3175649b49ee651385f934c7 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 11 Dec 2024 22:52:13 +0000
Subject: [PATCH 04/11] Update coverage data
---
README.md | 4 ++--
data.json | 2 +-
htmlcov/class_index.html | 12 +++++-----
htmlcov/function_index.html | 12 +++++-----
htmlcov/index.html | 12 +++++-----
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 ++--
htmlcov/z_70983d692f648185_api_py.html | 4 ++--
htmlcov/z_70983d692f648185_calculator_py.html | 4 ++--
htmlcov/z_70983d692f648185_default_py.html | 4 ++--
.../z_70983d692f648185_invalid_order_py.html | 4 ++--
.../z_70983d692f648185_logging_config_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a___init___py.html | 22 +++++++++----------
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_mocks_py.html | 8 +++----
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 ++--
16 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/README.md b/README.md
index 16bf818..76e14fd 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
| Name | Stmts | Miss | Cover | Missing |
|---------------------------------- | -------: | -------: | -------: | --------: |
-| annotated\_logger/\_\_init\_\_.py | 313 | 0 | 100% | |
+| annotated\_logger/\_\_init\_\_.py | 314 | 0 | 100% | |
| annotated\_logger/filter.py | 31 | 0 | 100% | |
| annotated\_logger/mocks.py | 124 | 0 | 100% | |
| annotated\_logger/plugins.py | 92 | 0 | 100% | |
@@ -15,7 +15,7 @@
| example/default.py | 53 | 0 | 100% | |
| example/invalid\_order.py | 5 | 0 | 100% | |
| example/logging\_config.py | 37 | 0 | 100% | |
-| **TOTAL** | **820** | **0** | **100%** | |
+| **TOTAL** | **821** | **0** | **100%** | |
## Setup coverage badge
diff --git a/data.json b/data.json
index a937e23..a6baed8 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T21:46:14.785613", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 313, "num_statements": 313, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 109, "num_statements": 109, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 116, "num_statements": 116, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 820, "num_statements": 820, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T22:52:11.970604", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index 8d7d5bc..8280fe1 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -99,10 +99,10 @@
annotated_logger/__init__.py
(no class)
- 116
+ 117
0
2
- 100%
+ 100%
annotated_logger/filter.py
@@ -301,10 +301,10 @@
Total
- 820
+ 821
0
7
- 100%
+ 100%
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index 0a61e23..add5585 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -267,10 +267,10 @@
annotated_logger/__init__.py
(no function)
- 109
+ 110
0
2
- 100%
+ 100%
annotated_logger/filter.py
@@ -917,10 +917,10 @@
Total
- 820
+ 821
0
7
- 100%
+ 100%
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index 921de7a..a80715f 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -72,10 +72,10 @@
annotated_logger/__init__.py
- 313
+ 314
0
2
- 100%
+ 100%
annotated_logger/filter.py
@@ -144,10 +144,10 @@
Total
- 820
+ 821
0
7
- 100%
+ 100%
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index ba88be6..b84b2f8 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"474fa3688db248836bda2750e6a4efc6","files":{"z_beb44c9891d1179a___init___py":{"hash":"aed0c62127a900a681a5da50c59ddbe2","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":313,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"5bc132f4e51702302e6399a78f8dc03b","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"bb9034f7f5e52f06f42a97a0ec949ee8","files":{"z_beb44c9891d1179a___init___py":{"hash":"415eed1964460ccde4262dc8a10a2594","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index 5a3a3cf..7f87569 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index 48db54d..2bbc273 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index 01a7624..09faf02 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index 7611906..0d9f763 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index 1121bbe..287e431 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index 6f6d5a6..1ef018d 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index b61f3a7..07414bb 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -54,8 +54,8 @@
- 313 statements
- 313 run
+ 314 statements
+ 314 run
0 missing
2 excluded
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -88,13 +88,13 @@
6 import logging . config
7 import time
8 import uuid
- 9 from copy import copy , deepcopy
- 10 from typing import (
- 11 TYPE_CHECKING ,
- 12 Any ,
- 13 Callable ,
- 14 Concatenate ,
- 15 Iterator ,
+ 9 from collections . abc import Iterator
+ 10 from copy import copy , deepcopy
+ 11 from typing import (
+ 12 TYPE_CHECKING ,
+ 13 Any ,
+ 14 Callable ,
+ 15 Concatenate ,
16 Literal ,
17 ParamSpec ,
18 Protocol ,
@@ -1050,7 +1050,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index ded6f85..c537bc1 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index 3544cfc..f6f2667 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -316,13 +316,13 @@
234 assert_logged . check ( self )
235
236
- 237 @ pytest . fixture ( )
+ 237 @ pytest . fixture
238 def annotated_logger_object ( ) -> logging . Logger :
239 """Logger to wrap with the `annotated_logger_mock` fixture."""
240 return logging . getLogger ( "annotated_logger" )
241
242
- 243 @ pytest . fixture ( )
+ 243 @ pytest . fixture
244 def annotated_logger_mock ( annotated_logger_object : logging . Logger ) -> AnnotatedLogMock :
245 """Fixture for a mock of the annotated logger."""
246 handler = annotated_logger_object . handlers [ 0 ]
@@ -342,7 +342,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
index 58e5f8d..5722ae8 100644
--- a/htmlcov/z_beb44c9891d1179a_plugins_py.html
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
@@ -297,7 +297,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 21:46 +0000
+ created at 2024-12-11 22:52 +0000
From 7acc7cf9816140ced27148741a10a113c5293716 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 12 Dec 2024 15:42:25 +0000
Subject: [PATCH 05/11] Update coverage data
---
data.json | 2 +-
htmlcov/class_index.html | 16 +-
htmlcov/function_index.html | 100 +-
htmlcov/index.html | 4 +-
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 +-
htmlcov/z_70983d692f648185_api_py.html | 4 +-
htmlcov/z_70983d692f648185_calculator_py.html | 4 +-
htmlcov/z_70983d692f648185_default_py.html | 4 +-
.../z_70983d692f648185_invalid_order_py.html | 4 +-
.../z_70983d692f648185_logging_config_py.html | 4 +-
htmlcov/z_beb44c9891d1179a___init___py.html | 1827 +++++++++--------
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 +-
htmlcov/z_beb44c9891d1179a_mocks_py.html | 4 +-
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 +-
15 files changed, 996 insertions(+), 991 deletions(-)
diff --git a/data.json b/data.json
index a6baed8..617873d 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-11T22:52:11.970604", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 135, 136, 137, 138, 139, 146, 148, 150, 151, 153, 155, 156, 157, 158, 159, 160, 161, 163, 164, 167, 168, 170, 177, 178, 179, 180, 184, 186, 195, 197, 209, 211, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 244, 246, 247, 249, 252, 253, 269, 301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 329, 341, 342, 346, 348, 350, 353, 355, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 792, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 862, 871, 872, 873, 874, 876, 877, 880, 881, 883, 885, 895, 896, 897, 898, 900, 901, 904, 905, 906, 908, 911, 912, 913, 914, 915, 916, 917, 918, 920, 922, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [135, 136, 137, 138, 139, 146], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [150, 151], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [177, 178, 179, 180, 184], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [195], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [209], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [246, 247, 249], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [341, 342, 346, 348], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [353], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [695, 696, 700, 701, 705, 706, 710, 711, 715, 718, 790], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [721, 723, 734, 736, 740, 744, 788], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [726, 729, 730, 731, 732], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 860], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [871, 872, 873, 874, 876, 877, 880, 881, 883], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [895, 896, 897, 898, 900, 901, 904, 905, 906], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [911, 912, 913, 914, 915, 916, 917, 918, 920], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [135, 136, 137, 138, 139, 146, 150, 151, 155, 156, 157, 158, 159, 160, 161, 163, 164], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [177, 178, 179, 180, 184, 195, 209, 219, 220, 222, 223, 224, 226, 227, 228, 229, 230, 231, 232, 233, 234, 240, 241, 242, 246, 247, 249], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [301, 302, 304, 305, 306, 307, 308, 309, 310, 312, 313, 314, 315, 316, 317, 318, 324, 325, 327, 341, 342, 346, 348, 353, 362, 363, 364, 365, 366, 367, 368, 370, 371, 372, 374, 695, 696, 700, 701, 705, 706, 710, 711, 715, 716, 718, 721, 723, 726, 729, 730, 731, 732, 734, 736, 740, 744, 745, 747, 749, 752, 753, 754, 755, 756, 758, 759, 760, 761, 762, 763, 764, 765, 766, 768, 769, 771, 775, 776, 777, 778, 779, 780, 783, 784, 785, 786, 788, 790, 804, 805, 806, 807, 810, 811, 812, 813, 815, 816, 817, 819, 824, 825, 828, 830, 834, 835, 836, 838, 839, 840, 841, 850, 858, 860, 871, 872, 873, 874, 876, 877, 880, 881, 883, 895, 896, 897, 898, 900, 901, 904, 905, 906, 911, 912, 913, 914, 915, 916, 917, 918, 920, 929, 930, 931, 932, 933, 935, 936, 937, 938, 941, 943], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 67, 68, 70, 80, 88, 91, 122, 123, 125, 148, 153, 167, 168, 170, 186, 197, 211, 244, 252, 253, 269, 329, 350, 355, 381, 382, 391, 392, 402, 403, 413, 414, 424, 425, 434, 435, 446, 447, 458, 459, 470, 471, 484, 485, 496, 497, 507, 508, 519, 520, 531, 532, 545, 546, 556, 557, 568, 569, 580, 581, 596, 597, 608, 609, 622, 623, 636, 637, 652, 792, 862, 885, 908, 922, 949, 955, 956, 957, 958, 959, 960, 961], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-12T15:42:24.657877", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index 8280fe1..26d285b 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -73,24 +73,24 @@
- annotated_logger/__init__.py
- AnnotatedIterator
+ annotated_logger/__init__.py
+ AnnotatedIterator
17
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter
+ annotated_logger/__init__.py
+ AnnotatedAdapter
27
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger
+ annotated_logger/__init__.py
+ AnnotatedLogger
153
0
0
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index add5585..61e913e 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -73,192 +73,192 @@
- annotated_logger/__init__.py
- AnnotatedIterator.__init__
+ annotated_logger/__init__.py
+ AnnotatedIterator.__init__
6
0
0
100%
- annotated_logger/__init__.py
- AnnotatedIterator.__iter__
+ annotated_logger/__init__.py
+ AnnotatedIterator.__iter__
2
0
0
100%
- annotated_logger/__init__.py
- AnnotatedIterator.__next__
+ annotated_logger/__init__.py
+ AnnotatedIterator.__next__
9
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter.__init__
+ annotated_logger/__init__.py
+ AnnotatedAdapter.__init__
5
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter.iterator
+ annotated_logger/__init__.py
+ AnnotatedAdapter.iterator
1
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter.process
+ annotated_logger/__init__.py
+ AnnotatedAdapter.process
1
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter.log
+ annotated_logger/__init__.py
+ AnnotatedAdapter.log
17
0
0
100%
- annotated_logger/__init__.py
- AnnotatedAdapter.annotate
+ annotated_logger/__init__.py
+ AnnotatedAdapter.annotate
3
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.__init__
+ annotated_logger/__init__.py
+ AnnotatedLogger.__init__
19
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._generate_logger
+ annotated_logger/__init__.py
+ AnnotatedLogger._generate_logger
4
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._action_annotation
+ annotated_logger/__init__.py
+ AnnotatedLogger._action_annotation
1
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.generate_filter
+ annotated_logger/__init__.py
+ AnnotatedLogger.generate_filter
11
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.annotate_logs
+ annotated_logger/__init__.py
+ AnnotatedLogger.annotate_logs
11
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.annotate_logs.decorator
+ annotated_logger/__init__.py
+ AnnotatedLogger.annotate_logs.decorator
1
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.annotate_logs.decorator
+ annotated_logger/__init__.py
+ AnnotatedLogger.annotate_logs.decorator
7
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.annotate_logs.decorator.wrap_class
+ annotated_logger/__init__.py
+ AnnotatedLogger.annotate_logs.decorator.wrap_class
5
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger.annotate_logs.decorator.wrap_function
+ annotated_logger/__init__.py
+ AnnotatedLogger.annotate_logs.decorator.wrap_function
30
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._determine_signature_adjustments
+ annotated_logger/__init__.py
+ AnnotatedLogger._determine_signature_adjustments
13
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._determine_signature_adjustments.inject_logger
+ annotated_logger/__init__.py
+ AnnotatedLogger._determine_signature_adjustments.inject_logger
13
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._inject_by_kwarg
+ annotated_logger/__init__.py
+ AnnotatedLogger._inject_by_kwarg
9
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._inject_by_index
+ annotated_logger/__init__.py
+ AnnotatedLogger._inject_by_index
9
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._check_parameters_for_self_and_cls
+ annotated_logger/__init__.py
+ AnnotatedLogger._check_parameters_for_self_and_cls
9
0
0
100%
- annotated_logger/__init__.py
- AnnotatedLogger._pick_correct_logger
+ annotated_logger/__init__.py
+ AnnotatedLogger._pick_correct_logger
11
0
0
100%
- annotated_logger/__init__.py
- _attempt_post_call
+ annotated_logger/__init__.py
+ _attempt_post_call
7
0
0
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index a80715f..ce9169a 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index b84b2f8..a9467ef 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"bb9034f7f5e52f06f42a97a0ec949ee8","files":{"z_beb44c9891d1179a___init___py":{"hash":"415eed1964460ccde4262dc8a10a2594","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"921664f54f86e39d38d2850cf9077bba","files":{"z_beb44c9891d1179a___init___py":{"hash":"fd7c8bda65ba92e0aa95845b69b94b37","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index 7f87569..8e53a7d 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index 2bbc273..2ecadd3 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index 09faf02..25e6a17 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index 0d9f763..180c162 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index 287e431..2118a02 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index 1ef018d..0ca1540 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index 07414bb..7f2eec8 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -111,936 +111,941 @@
29 if TYPE_CHECKING : # pragma: no cover
30 from collections . abc import MutableMapping
31
- 32 VERSION = "1.2.0" # pragma: no mutate
- 33
- 34 T = TypeVar ( "T" )
- 35 P = ParamSpec ( "P" )
- 36 P2 = ParamSpec ( "P2" )
- 37 P3 = ParamSpec ( "P3" )
- 38 R = TypeVar ( "R" )
- 39 S = TypeVar ( "S" )
- 40 S2 = TypeVar ( "S2" )
- 41 C_co = TypeVar ( "C_co" , covariant = True )
- 42
- 43
- 44 class AnnotatedClass ( Protocol [ C_co ] ) :
- 45 """Protocol for typing classes that we annotate and add the logger to."""
- 46
- 47 annotated_logger : AnnotatedAdapter
+ 32 # Use 0.0.0.dev1 and so on when working in a PR
+ 33 # Each push attempts to upload to testpypi, but it only works with a unique version
+ 34 # https://test.pypi.org/project/annotated-logger/
+ 35 # The dev versions in testpypi can then be pulled in to whatever project needed
+ 36 # the new feature.
+ 37 VERSION = "1.2.1" # pragma: no mutate
+ 38
+ 39 T = TypeVar ( "T" )
+ 40 P = ParamSpec ( "P" )
+ 41 P2 = ParamSpec ( "P2" )
+ 42 P3 = ParamSpec ( "P3" )
+ 43 R = TypeVar ( "R" )
+ 44 S = TypeVar ( "S" )
+ 45 S2 = TypeVar ( "S2" )
+ 46 C_co = TypeVar ( "C_co" , covariant = True )
+ 47
48
- 49
- 50 PreCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
- 51 PostCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
- 52 SelfLoggerAndParams = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , R ]
- 53 LoggerAndParams = Callable [ Concatenate [ "AnnotatedAdapter" , P ] , R ]
- 54 SelfAndParams = Callable [ Concatenate [ S , P ] , R ]
- 55 ParamsOnly = Callable [ P , R ]
- 56 SelfAndLogger = Callable [ [ S , "AnnotatedAdapter" ] , R ]
- 57 LoggerOnly = Callable [ [ "AnnotatedAdapter" ] , R ]
- 58 SelfOnly = Callable [ [ S ] , R ]
- 59 Empty = Callable [ [ ] , R ]
- 60
- 61 NoInjectionSelf = Callable [ [ SelfAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
- 62 NoInjectionBare = Callable [ [ ParamsOnly [ P , R ] ] , ParamsOnly [ P , R ] ]
- 63 InjectionSelf = Callable [ [ SelfLoggerAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
- 64 InjectionSelfProvide = Callable [
- 65 [ SelfLoggerAndParams [ S , P , R ] ] , SelfLoggerAndParams [ S , P , R ]
- 66 ]
- 67 InjectionBare = Callable [ [ LoggerAndParams [ P , R ] ] , ParamsOnly [ P , R ] ]
- 68 InjectionBareProvide = Callable [ [ LoggerAndParams [ P , R ] ] , LoggerAndParams [ P , R ] ]
- 69
- 70 Function = (
- 71 SelfLoggerAndParams [ S , P , R ]
- 72 | SelfAndParams [ S , P , R ]
- 73 | SelfAndLogger [ S , R ]
- 74 | SelfOnly [ S , R ]
- 75 | LoggerAndParams [ P , R ]
- 76 | ParamsOnly [ P , R ]
- 77 | LoggerOnly [ R ]
- 78 | Empty [ R ]
- 79 )
- 80 Decorator = (
- 81 NoInjectionSelf [ S , P , R ]
- 82 | InjectionSelf [ S , P , R ]
- 83 | InjectionSelfProvide [ S , P , R ]
- 84 | NoInjectionBare [ P , R ]
- 85 | InjectionBare [ P , R ]
- 86 | InjectionBareProvide [ P , R ]
- 87 )
- 88 Annotations = dict [ str , Any ]
- 89
- 90
- 91 DEFAULT_LOGGING_CONFIG = {
- 92 "version" : 1 ,
- 93 "disable_existing_loggers" : False , # pragma: no mutate
- 94 "filters" : {
- 95 "annotated_filter" : {
- 96 "annotated_filter" : True , # pragma: no mutate
- 97 }
- 98 } ,
- 99 "handlers" : {
- 100 "annotated_handler" : {
- 101 "class" : "logging.StreamHandler" ,
- 102 "formatter" : "annotated_formatter" ,
- 103 } ,
- 104 } ,
- 105 "formatters" : {
- 106 "annotated_formatter" : {
- 107 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" , # pragma: no mutate
- 108 "format" : "{created} {levelname} {name} {message}" , # pragma: no mutate
- 109 "style" : "{" ,
- 110 } ,
- 111 } ,
- 112 "loggers" : {
- 113 "annotated_logger" : {
- 114 "level" : "DEBUG" ,
- 115 "handlers" : [ "annotated_handler" ] ,
- 116 "propagate" : False , # pragma: no mutate
- 117 } ,
- 118 } ,
- 119 }
- 120
- 121
- 122 class AnnotatedIterator ( Iterator [ T ] ) :
- 123 """Iterator that logs as it iterates."""
- 124
- 125 def __init__ (
- 126 self ,
- 127 logger : AnnotatedAdapter ,
- 128 name : str ,
- 129 wrapped : Iterator [ T ] ,
- 130 * ,
- 131 value : bool ,
- 132 level : str ,
- 133 ) -> None :
- 134 """Store the wrapped iterator, the logger and note if we log the value."""
- 135 self . wrapped = wrapped
- 136 self . logger = logger
- 137 self . extras : dict [ str , T | str ] = { "iterator" : name }
- 138 self . value = value
- 139 log_methods = {
- 140 "debug" : self . logger . debug ,
- 141 "info" : self . logger . info ,
- 142 "warning" : self . logger . warning ,
- 143 "error" : self . logger . error ,
- 144 "exception" : self . logger . exception ,
- 145 }
- 146 self . log_method = log_methods [ level ]
- 147
- 148 def __iter__ ( self ) -> AnnotatedIterator [ T ] :
- 149 """Log the start of the iteration."""
- 150 self . log_method ( "Starting iteration" , extra = self . extras )
- 151 return self
+ 49 class AnnotatedClass ( Protocol [ C_co ] ) :
+ 50 """Protocol for typing classes that we annotate and add the logger to."""
+ 51
+ 52 annotated_logger : AnnotatedAdapter
+ 53
+ 54
+ 55 PreCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
+ 56 PostCall = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , None ] | None
+ 57 SelfLoggerAndParams = Callable [ Concatenate [ S , "AnnotatedAdapter" , P ] , R ]
+ 58 LoggerAndParams = Callable [ Concatenate [ "AnnotatedAdapter" , P ] , R ]
+ 59 SelfAndParams = Callable [ Concatenate [ S , P ] , R ]
+ 60 ParamsOnly = Callable [ P , R ]
+ 61 SelfAndLogger = Callable [ [ S , "AnnotatedAdapter" ] , R ]
+ 62 LoggerOnly = Callable [ [ "AnnotatedAdapter" ] , R ]
+ 63 SelfOnly = Callable [ [ S ] , R ]
+ 64 Empty = Callable [ [ ] , R ]
+ 65
+ 66 NoInjectionSelf = Callable [ [ SelfAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
+ 67 NoInjectionBare = Callable [ [ ParamsOnly [ P , R ] ] , ParamsOnly [ P , R ] ]
+ 68 InjectionSelf = Callable [ [ SelfLoggerAndParams [ S , P , R ] ] , SelfAndParams [ S , P , R ] ]
+ 69 InjectionSelfProvide = Callable [
+ 70 [ SelfLoggerAndParams [ S , P , R ] ] , SelfLoggerAndParams [ S , P , R ]
+ 71 ]
+ 72 InjectionBare = Callable [ [ LoggerAndParams [ P , R ] ] , ParamsOnly [ P , R ] ]
+ 73 InjectionBareProvide = Callable [ [ LoggerAndParams [ P , R ] ] , LoggerAndParams [ P , R ] ]
+ 74
+ 75 Function = (
+ 76 SelfLoggerAndParams [ S , P , R ]
+ 77 | SelfAndParams [ S , P , R ]
+ 78 | SelfAndLogger [ S , R ]
+ 79 | SelfOnly [ S , R ]
+ 80 | LoggerAndParams [ P , R ]
+ 81 | ParamsOnly [ P , R ]
+ 82 | LoggerOnly [ R ]
+ 83 | Empty [ R ]
+ 84 )
+ 85 Decorator = (
+ 86 NoInjectionSelf [ S , P , R ]
+ 87 | InjectionSelf [ S , P , R ]
+ 88 | InjectionSelfProvide [ S , P , R ]
+ 89 | NoInjectionBare [ P , R ]
+ 90 | InjectionBare [ P , R ]
+ 91 | InjectionBareProvide [ P , R ]
+ 92 )
+ 93 Annotations = dict [ str , Any ]
+ 94
+ 95
+ 96 DEFAULT_LOGGING_CONFIG = {
+ 97 "version" : 1 ,
+ 98 "disable_existing_loggers" : False , # pragma: no mutate
+ 99 "filters" : {
+ 100 "annotated_filter" : {
+ 101 "annotated_filter" : True , # pragma: no mutate
+ 102 }
+ 103 } ,
+ 104 "handlers" : {
+ 105 "annotated_handler" : {
+ 106 "class" : "logging.StreamHandler" ,
+ 107 "formatter" : "annotated_formatter" ,
+ 108 } ,
+ 109 } ,
+ 110 "formatters" : {
+ 111 "annotated_formatter" : {
+ 112 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" , # pragma: no mutate
+ 113 "format" : "{created} {levelname} {name} {message}" , # pragma: no mutate
+ 114 "style" : "{" ,
+ 115 } ,
+ 116 } ,
+ 117 "loggers" : {
+ 118 "annotated_logger" : {
+ 119 "level" : "DEBUG" ,
+ 120 "handlers" : [ "annotated_handler" ] ,
+ 121 "propagate" : False , # pragma: no mutate
+ 122 } ,
+ 123 } ,
+ 124 }
+ 125
+ 126
+ 127 class AnnotatedIterator ( Iterator [ T ] ) :
+ 128 """Iterator that logs as it iterates."""
+ 129
+ 130 def __init__ (
+ 131 self ,
+ 132 logger : AnnotatedAdapter ,
+ 133 name : str ,
+ 134 wrapped : Iterator [ T ] ,
+ 135 * ,
+ 136 value : bool ,
+ 137 level : str ,
+ 138 ) -> None :
+ 139 """Store the wrapped iterator, the logger and note if we log the value."""
+ 140 self . wrapped = wrapped
+ 141 self . logger = logger
+ 142 self . extras : dict [ str , T | str ] = { "iterator" : name }
+ 143 self . value = value
+ 144 log_methods = {
+ 145 "debug" : self . logger . debug ,
+ 146 "info" : self . logger . info ,
+ 147 "warning" : self . logger . warning ,
+ 148 "error" : self . logger . error ,
+ 149 "exception" : self . logger . exception ,
+ 150 }
+ 151 self . log_method = log_methods [ level ]
152
- 153 def __next__ ( self ) -> T :
- 154 """Log that we are at the next iteration."""
- 155 try :
- 156 value = next ( self . wrapped )
- 157 if self . value :
- 158 self . extras [ "value" ] = value
- 159 except StopIteration :
- 160 self . log_method ( "Execution complete" , extra = self . extras )
- 161 raise
- 162
- 163 self . log_method ( "next" , extra = self . extras )
- 164 return value
- 165
- 166
- 167 class AnnotatedAdapter ( logging . LoggerAdapter ) : # pyright: ignore[reportMissingTypeArgument]
- 168 """Adapter that provides extra methods."""
- 169
- 170 def __init__ (
- 171 self ,
- 172 logger : logging . Logger ,
- 173 annotated_filter : AnnotatedFilter ,
- 174 max_length : int | None = None ,
- 175 ) -> None :
- 176 """Adapter that acts like a LogRecord, but allows for annotations."""
- 177 self . filter = annotated_filter
- 178 self . logger = logger
- 179 self . logger . addFilter ( annotated_filter )
- 180 self . max_length = max_length
- 181
- 182 # We don't need to send in contextual information here
- 183 # as we do it in the filter for runtime stuff
- 184 super ( ) . __init__ ( logger )
- 185
- 186 def iterator (
- 187 self ,
- 188 name : str ,
- 189 wrapped : Iterator [ T ] ,
- 190 * ,
- 191 value : bool = True ,
- 192 level : str = "info" ,
- 193 ) -> AnnotatedIterator [ T ] :
- 194 """Return an iterator that logs as it iterates."""
- 195 return AnnotatedIterator ( self , name , wrapped , value = value , level = level )
- 196
- 197 def process (
- 198 self , msg : str , kwargs : MutableMapping [ str , Any ]
- 199 ) -> tuple [ str , MutableMapping [ str , Any ] ] :
- 200 """Override default LoggerAdapter process behavior.
+ 153 def __iter__ ( self ) -> AnnotatedIterator [ T ] :
+ 154 """Log the start of the iteration."""
+ 155 self . log_method ( "Starting iteration" , extra = self . extras )
+ 156 return self
+ 157
+ 158 def __next__ ( self ) -> T :
+ 159 """Log that we are at the next iteration."""
+ 160 try :
+ 161 value = next ( self . wrapped )
+ 162 if self . value :
+ 163 self . extras [ "value" ] = value
+ 164 except StopIteration :
+ 165 self . log_method ( "Execution complete" , extra = self . extras )
+ 166 raise
+ 167
+ 168 self . log_method ( "next" , extra = self . extras )
+ 169 return value
+ 170
+ 171
+ 172 class AnnotatedAdapter ( logging . LoggerAdapter ) : # pyright: ignore[reportMissingTypeArgument]
+ 173 """Adapter that provides extra methods."""
+ 174
+ 175 def __init__ (
+ 176 self ,
+ 177 logger : logging . Logger ,
+ 178 annotated_filter : AnnotatedFilter ,
+ 179 max_length : int | None = None ,
+ 180 ) -> None :
+ 181 """Adapter that acts like a LogRecord, but allows for annotations."""
+ 182 self . filter = annotated_filter
+ 183 self . logger = logger
+ 184 self . logger . addFilter ( annotated_filter )
+ 185 self . max_length = max_length
+ 186
+ 187 # We don't need to send in contextual information here
+ 188 # as we do it in the filter for runtime stuff
+ 189 super ( ) . __init__ ( logger )
+ 190
+ 191 def iterator (
+ 192 self ,
+ 193 name : str ,
+ 194 wrapped : Iterator [ T ] ,
+ 195 * ,
+ 196 value : bool = True ,
+ 197 level : str = "info" ,
+ 198 ) -> AnnotatedIterator [ T ] :
+ 199 """Return an iterator that logs as it iterates."""
+ 200 return AnnotatedIterator ( self , name , wrapped , value = value , level = level )
201
- 202 By default a LoggerAdapter replaces the extras passed in a logger call with
- 203 the ones given at it's initialization. That's not the behavior we want.
- 204 So, we just return the kwargs as provided instead.
- 205
- 206 3.13 adds a `merge_extra` argument which should make this method unneeded.
- 207 But, it doesn't make sense to force everyone to use python 3.13.
- 208 """
- 209 return msg , kwargs
+ 202 def process (
+ 203 self , msg : str , kwargs : MutableMapping [ str , Any ]
+ 204 ) -> tuple [ str , MutableMapping [ str , Any ] ] :
+ 205 """Override default LoggerAdapter process behavior.
+ 206
+ 207 By default a LoggerAdapter replaces the extras passed in a logger call with
+ 208 the ones given at it's initialization. That's not the behavior we want.
+ 209 So, we just return the kwargs as provided instead.
210
- 211 def log (
- 212 self ,
- 213 level : int ,
- 214 msg : object ,
- 215 * args : object ,
- 216 ** kwargs : object ,
- 217 ) -> None :
- 218 """Override log method to allow for message splitting."""
- 219 if not self . max_length or not isinstance ( msg , str ) :
- 220 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
- 221
- 222 msg_len = len ( msg ) # pyright: ignore[reportArgumentType]
- 223 if msg_len <= self . max_length :
- 224 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
- 225
- 226 msg_chunks = [ ]
- 227 while len ( msg ) > self . max_length : # pyright: ignore[reportArgumentType] # pragma: no mutate
- 228 msg_chunks . append ( msg [ : self . max_length ] ) # pyright: ignore[reportArgumentType]
- 229 msg = msg [ self . max_length : ] # pyright: ignore[reportArgumentType]
- 230 kwargs [ "extra" ] = { "message_parts" : len ( msg_chunks ) + 1 , "split" : True }
- 231 kwargs [ "extra" ] [ "split_complete" ] = False
- 232 for i , part in enumerate ( msg_chunks ) :
- 233 kwargs [ "extra" ] [ "message_part" ] = i + 1
- 234 super ( ) . log (
- 235 level ,
- 236 part ,
- 237 * args ,
- 238 ** kwargs , # pyright: ignore[reportArgumentType]
- 239 )
- 240 kwargs [ "extra" ] [ "message_part" ] = len ( msg_chunks ) + 1
- 241 kwargs [ "extra" ] [ "split_complete" ] = True
- 242 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
- 243
- 244 def annotate ( self , * , persist : bool = False , ** kwargs : Any ) -> None :
- 245 """Add an annotation to the filter."""
- 246 if persist :
- 247 self . filter . class_annotations . update ( kwargs )
- 248 else :
- 249 self . filter . annotations . update ( kwargs )
- 250
- 251
- 252 class AnnotatedLogger :
- 253 """Class that contains settings and the decorator method.
- 254
- 255 Args:
- 256 ----
- 257 annotations: Dictionary of annotations to be added to every log message
- 258 plugins: list of plugins to use
+ 211 3.13 adds a `merge_extra` argument which should make this method unneeded.
+ 212 But, it doesn't make sense to force everyone to use python 3.13.
+ 213 """
+ 214 return msg , kwargs
+ 215
+ 216 def log (
+ 217 self ,
+ 218 level : int ,
+ 219 msg : object ,
+ 220 * args : object ,
+ 221 ** kwargs : object ,
+ 222 ) -> None :
+ 223 """Override log method to allow for message splitting."""
+ 224 if not self . max_length or not isinstance ( msg , str ) :
+ 225 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 226
+ 227 msg_len = len ( msg ) # pyright: ignore[reportArgumentType]
+ 228 if msg_len <= self . max_length :
+ 229 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 230
+ 231 msg_chunks = [ ]
+ 232 while len ( msg ) > self . max_length : # pyright: ignore[reportArgumentType] # pragma: no mutate
+ 233 msg_chunks . append ( msg [ : self . max_length ] ) # pyright: ignore[reportArgumentType]
+ 234 msg = msg [ self . max_length : ] # pyright: ignore[reportArgumentType]
+ 235 kwargs [ "extra" ] = { "message_parts" : len ( msg_chunks ) + 1 , "split" : True }
+ 236 kwargs [ "extra" ] [ "split_complete" ] = False
+ 237 for i , part in enumerate ( msg_chunks ) :
+ 238 kwargs [ "extra" ] [ "message_part" ] = i + 1
+ 239 super ( ) . log (
+ 240 level ,
+ 241 part ,
+ 242 * args ,
+ 243 ** kwargs , # pyright: ignore[reportArgumentType]
+ 244 )
+ 245 kwargs [ "extra" ] [ "message_part" ] = len ( msg_chunks ) + 1
+ 246 kwargs [ "extra" ] [ "split_complete" ] = True
+ 247 return super ( ) . log ( level , msg , * args , ** kwargs ) # pyright: ignore[reportArgumentType]
+ 248
+ 249 def annotate ( self , * , persist : bool = False , ** kwargs : Any ) -> None :
+ 250 """Add an annotation to the filter."""
+ 251 if persist :
+ 252 self . filter . class_annotations . update ( kwargs )
+ 253 else :
+ 254 self . filter . annotations . update ( kwargs )
+ 255
+ 256
+ 257 class AnnotatedLogger :
+ 258 """Class that contains settings and the decorator method.
259
- 260 Methods:
- 261 -------
- 262 annotate_logs: Decorator that will insert the `annotated_logger` argument if
- 263 asked for in the method signature or let a provided AnnotatedAdapter to be
- 264 passed. Creates a new AnnotatedAdapter instance for each invocation of a
- 265 annotated function to isolate any annotations that are set during execution.
- 266
- 267 """
- 268
- 269 def __init__ ( # noqa: PLR0913
- 270 self ,
- 271 annotations : dict [ str , Any ] | None = None ,
- 272 plugins : list [ BasePlugin ] | None = None ,
- 273 max_length : int | None = None ,
- 274 log_level : int = logging . INFO ,
- 275 name : str = "annotated_logger" ,
- 276 config : dict [ str , Any ] | Literal [ False ] | None = None ,
- 277 ) -> None :
- 278 """Store the settings.
- 279
- 280 Args:
- 281 ----
- 282 annotations: Dictionary of static annotations - default None
- 283 plugins: List of plugins to be applied - default [BasePlugin]
- 284 is created and used - default None
- 285 max_length: Integer, maximum length of a message before it's broken into
- 286 multiple message and log calls. - default None
- 287 log_level: Integer, log level set for the shared root logger of the package.
- 288 - default logging.INFO (20)
- 289 name: Name of the shared root logger of the package. If more than one
- 290 `AnnotatedLogger` object is created in a project this should be set,
- 291 otherwise settings like level will be overwritten by the second to execute
- 292 - default 'annotated_logger'
- 293 config: Optional - logging config dictionary to be passed to
- 294 logging.config.dictConfig or False. If false dictConfig will not be called.
- 295 If not passed the DEFAULT_LOGGING_CONFIG will be used. A special
- 296 `annotated_filter` keyword is looked for, if present it will be
- 297 replaced with a `()` filter config to generate a filter for this
- 298 instance of `AnnotatedLogger`.
- 299
- 300 """
- 301 if plugins is None :
- 302 plugins = [ ]
- 303
- 304 self . log_level = log_level
- 305 self . logger_root_name = name
- 306 self . logger_base = logging . getLogger ( self . logger_root_name )
- 307 self . logger_base . setLevel ( self . log_level )
- 308 self . annotations = annotations or { }
- 309 self . plugins = [ BasePlugin ( ) ]
- 310 self . plugins . extend ( plugins )
- 311
- 312 if config is None :
- 313 config = deepcopy ( DEFAULT_LOGGING_CONFIG )
- 314 if config :
- 315 for config_filter in config [ "filters" ] . values ( ) :
- 316 if config_filter . get ( "annotated_filter" ) :
- 317 del config_filter [ "annotated_filter" ]
- 318 config_filter [ "()" ] = self . generate_filter
- 319
- 320 # If we pass in config=False we don't want to configure.
- 321 # This is typically because we have another AnnotatedLogger
- 322 # object which did run the config and the dict config had config
- 323 # for both.
- 324 if config :
- 325 logging . config . dictConfig ( config )
- 326
- 327 self . max_length = max_length
- 328
- 329 def _generate_logger (
- 330 self ,
- 331 function : Function [ S , P , R ] | None = None ,
- 332 cls : type | None = None ,
- 333 logger_base_name : str | None = None ,
- 334 ) -> AnnotatedAdapter :
- 335 """Generate a unique adapter with a unique logger object.
- 336
- 337 This is required because the AnnotatedAdapter adds a filter to the logger.
- 338 The filter stores the annotations inside it, so they will mix if a new filter
- 339 and logger are not created each time.
- 340 """
- 341 root_name = logger_base_name or self . logger_root_name
- 342 logger = logging . getLogger (
- 343 f" { root_name } . { uuid . uuid4 ( ) } " # pragma: no mutate
- 344 )
- 345
- 346 annotated_filter = self . generate_filter ( function = function , cls = cls )
- 347
- 348 return AnnotatedAdapter ( logger , annotated_filter , self . max_length )
- 349
- 350 def _action_annotation (
- 351 self , function : Function [ S , P , R ] , key : str = "action"
- 352 ) -> dict [ str , str ] :
- 353 return { key : f" { function . __module__ } : { function . __qualname__ } " }
+ 260 Args:
+ 261 ----
+ 262 annotations: Dictionary of annotations to be added to every log message
+ 263 plugins: list of plugins to use
+ 264
+ 265 Methods:
+ 266 -------
+ 267 annotate_logs: Decorator that will insert the `annotated_logger` argument if
+ 268 asked for in the method signature or let a provided AnnotatedAdapter to be
+ 269 passed. Creates a new AnnotatedAdapter instance for each invocation of a
+ 270 annotated function to isolate any annotations that are set during execution.
+ 271
+ 272 """
+ 273
+ 274 def __init__ ( # noqa: PLR0913
+ 275 self ,
+ 276 annotations : dict [ str , Any ] | None = None ,
+ 277 plugins : list [ BasePlugin ] | None = None ,
+ 278 max_length : int | None = None ,
+ 279 log_level : int = logging . INFO ,
+ 280 name : str = "annotated_logger" ,
+ 281 config : dict [ str , Any ] | Literal [ False ] | None = None ,
+ 282 ) -> None :
+ 283 """Store the settings.
+ 284
+ 285 Args:
+ 286 ----
+ 287 annotations: Dictionary of static annotations - default None
+ 288 plugins: List of plugins to be applied - default [BasePlugin]
+ 289 is created and used - default None
+ 290 max_length: Integer, maximum length of a message before it's broken into
+ 291 multiple message and log calls. - default None
+ 292 log_level: Integer, log level set for the shared root logger of the package.
+ 293 - default logging.INFO (20)
+ 294 name: Name of the shared root logger of the package. If more than one
+ 295 `AnnotatedLogger` object is created in a project this should be set,
+ 296 otherwise settings like level will be overwritten by the second to execute
+ 297 - default 'annotated_logger'
+ 298 config: Optional - logging config dictionary to be passed to
+ 299 logging.config.dictConfig or False. If false dictConfig will not be called.
+ 300 If not passed the DEFAULT_LOGGING_CONFIG will be used. A special
+ 301 `annotated_filter` keyword is looked for, if present it will be
+ 302 replaced with a `()` filter config to generate a filter for this
+ 303 instance of `AnnotatedLogger`.
+ 304
+ 305 """
+ 306 if plugins is None :
+ 307 plugins = [ ]
+ 308
+ 309 self . log_level = log_level
+ 310 self . logger_root_name = name
+ 311 self . logger_base = logging . getLogger ( self . logger_root_name )
+ 312 self . logger_base . setLevel ( self . log_level )
+ 313 self . annotations = annotations or { }
+ 314 self . plugins = [ BasePlugin ( ) ]
+ 315 self . plugins . extend ( plugins )
+ 316
+ 317 if config is None :
+ 318 config = deepcopy ( DEFAULT_LOGGING_CONFIG )
+ 319 if config :
+ 320 for config_filter in config [ "filters" ] . values ( ) :
+ 321 if config_filter . get ( "annotated_filter" ) :
+ 322 del config_filter [ "annotated_filter" ]
+ 323 config_filter [ "()" ] = self . generate_filter
+ 324
+ 325 # If we pass in config=False we don't want to configure.
+ 326 # This is typically because we have another AnnotatedLogger
+ 327 # object which did run the config and the dict config had config
+ 328 # for both.
+ 329 if config :
+ 330 logging . config . dictConfig ( config )
+ 331
+ 332 self . max_length = max_length
+ 333
+ 334 def _generate_logger (
+ 335 self ,
+ 336 function : Function [ S , P , R ] | None = None ,
+ 337 cls : type | None = None ,
+ 338 logger_base_name : str | None = None ,
+ 339 ) -> AnnotatedAdapter :
+ 340 """Generate a unique adapter with a unique logger object.
+ 341
+ 342 This is required because the AnnotatedAdapter adds a filter to the logger.
+ 343 The filter stores the annotations inside it, so they will mix if a new filter
+ 344 and logger are not created each time.
+ 345 """
+ 346 root_name = logger_base_name or self . logger_root_name
+ 347 logger = logging . getLogger (
+ 348 f" { root_name } . { uuid . uuid4 ( ) } " # pragma: no mutate
+ 349 )
+ 350
+ 351 annotated_filter = self . generate_filter ( function = function , cls = cls )
+ 352
+ 353 return AnnotatedAdapter ( logger , annotated_filter , self . max_length )
354
- 355 def generate_filter (
- 356 self ,
- 357 function : Function [ S , P , R ] | None = None ,
- 358 cls : type [ C_co ] | None = None ,
- 359 annotations : dict [ str , Any ] | None = None ,
- 360 ) -> AnnotatedFilter :
- 361 """Create a AnnotatedFilter with the correct annotations and plugins."""
- 362 annotations_passed = annotations
- 363 annotations = annotations or { }
- 364 if function :
- 365 annotations . update ( self . _action_annotation ( function ) )
- 366 class_annotations = { }
- 367 elif cls :
- 368 class_annotations = { "class" : f" { cls . __module__ } : { cls . __qualname__ } " }
- 369 else :
- 370 class_annotations = { }
- 371 if not annotations_passed :
- 372 annotations . update ( self . annotations )
- 373
- 374 return AnnotatedFilter (
- 375 annotations = annotations ,
- 376 class_annotations = class_annotations ,
- 377 plugins = self . plugins ,
- 378 )
- 379
- 380 #### Defaults
- 381 @ overload
- 382 def annotate_logs (
- 383 self ,
- 384 logger_name : str | None = None ,
- 385 * ,
- 386 success_info : bool = True , # pragma: no mutate
- 387 pre_call : PreCall [ S2 , P2 ] = None ,
- 388 post_call : PostCall [ S2 , P3 ] = None ,
- 389 ) -> NoInjectionSelf [ S , P , R ] : ...
- 390
- 391 @ overload
- 392 def annotate_logs (
- 393 self ,
- 394 logger_name : str | None = None ,
- 395 * ,
- 396 success_info : bool = True , # pragma: no mutate
- 397 pre_call : PreCall [ S2 , P2 ] = None ,
- 398 post_call : PostCall [ S2 , P3 ] = None ,
- 399 _typing_requested : Literal [ False ] ,
- 400 ) -> NoInjectionSelf [ S , P , R ] : ...
- 401
- 402 @ overload
- 403 def annotate_logs (
- 404 self ,
- 405 logger_name : str | None = None ,
- 406 * ,
- 407 success_info : bool = True , # pragma: no mutate
- 408 pre_call : PreCall [ S2 , P2 ] = None ,
- 409 post_call : PostCall [ S2 , P3 ] = None ,
- 410 provided : Literal [ False ] ,
- 411 ) -> NoInjectionSelf [ S , P , R ] : ...
- 412
- 413 @ overload
- 414 def annotate_logs (
- 415 self ,
- 416 logger_name : str | None = None ,
- 417 * ,
- 418 success_info : bool = True , # pragma: no mutate
- 419 pre_call : PreCall [ S2 , P2 ] = None ,
- 420 post_call : PostCall [ S2 , P3 ] = None ,
- 421 _typing_self : Literal [ True ] ,
- 422 ) -> NoInjectionSelf [ S , P , R ] : ...
- 423
- 424 @ overload
- 425 def annotate_logs (
- 426 self ,
- 427 logger_name : str | None = None ,
- 428 * ,
- 429 success_info : bool = True , # pragma: no mutate
- 430 pre_call : PreCall [ S2 , P2 ] = None ,
- 431 post_call : PostCall [ S2 , P3 ] = None ,
- 432 ) -> NoInjectionSelf [ S , P , R ] : ...
- 433
- 434 @ overload
- 435 def annotate_logs (
- 436 self ,
- 437 logger_name : str | None = None ,
- 438 * ,
- 439 success_info : bool = True , # pragma: no mutate
- 440 pre_call : PreCall [ S2 , P2 ] = None ,
- 441 post_call : PostCall [ S2 , P3 ] = None ,
- 442 _typing_self : Literal [ True ] ,
- 443 _typing_requested : Literal [ False ] ,
- 444 ) -> NoInjectionSelf [ S , P , R ] : ...
- 445
- 446 @ overload
- 447 def annotate_logs (
- 448 self ,
- 449 logger_name : str | None = None ,
- 450 * ,
- 451 success_info : bool = True , # pragma: no mutate
- 452 pre_call : PreCall [ S2 , P2 ] = None ,
- 453 post_call : PostCall [ S2 , P3 ] = None ,
- 454 provided : Literal [ False ] ,
- 455 _typing_requested : Literal [ False ] ,
- 456 ) -> NoInjectionSelf [ S , P , R ] : ...
- 457
- 458 @ overload
- 459 def annotate_logs (
- 460 self ,
- 461 logger_name : str | None = None ,
- 462 * ,
- 463 success_info : bool = True , # pragma: no mutate
- 464 pre_call : PreCall [ S2 , P2 ] = None ,
- 465 post_call : PostCall [ S2 , P3 ] = None ,
- 466 _typing_self : Literal [ True ] ,
- 467 provided : Literal [ False ] ,
- 468 ) -> NoInjectionSelf [ S , P , R ] : ...
- 469
- 470 @ overload
- 471 def annotate_logs (
- 472 self ,
- 473 logger_name : str | None = None ,
- 474 * ,
- 475 success_info : bool = True , # pragma: no mutate
- 476 pre_call : PreCall [ S2 , P2 ] = None ,
- 477 post_call : PostCall [ S2 , P3 ] = None ,
- 478 _typing_self : Literal [ True ] ,
- 479 _typing_requested : Literal [ False ] ,
- 480 provided : Literal [ False ] ,
- 481 ) -> NoInjectionSelf [ S , P , R ] : ...
- 482
- 483 #### Class True
- 484 @ overload
- 485 def annotate_logs (
- 486 self ,
- 487 logger_name : str | None = None ,
- 488 * ,
- 489 _typing_class : Literal [ True ] ,
- 490 success_info : bool = True , # pragma: no mutate
- 491 pre_call : PreCall [ S , P2 ] = None ,
- 492 post_call : PostCall [ S , P3 ] = None ,
- 493 ) -> Callable [ [ type [ C_co ] ] , type [ C_co ] ] : ...
- 494
- 495 ### Instance False
- 496 @ overload
- 497 def annotate_logs (
- 498 self ,
- 499 logger_name : str | None = None ,
- 500 * ,
- 501 success_info : bool = True , # pragma: no mutate
- 502 pre_call : PreCall [ S2 , P2 ] = None ,
- 503 post_call : PostCall [ S2 , P3 ] = None ,
- 504 _typing_self : Literal [ False ] ,
- 505 ) -> NoInjectionBare [ P , R ] : ...
- 506
- 507 @ overload
- 508 def annotate_logs (
- 509 self ,
- 510 logger_name : str | None = None ,
- 511 * ,
- 512 success_info : bool = True , # pragma: no mutate
- 513 pre_call : PreCall [ S2 , P2 ] = None ,
- 514 post_call : PostCall [ S2 , P3 ] = None ,
- 515 _typing_self : Literal [ False ] ,
- 516 _typing_requested : Literal [ False ] ,
- 517 ) -> NoInjectionBare [ P , R ] : ...
- 518
- 519 @ overload
- 520 def annotate_logs (
- 521 self ,
- 522 logger_name : str | None = None ,
- 523 * ,
- 524 success_info : bool = True , # pragma: no mutate
- 525 pre_call : PreCall [ S2 , P2 ] = None ,
- 526 post_call : PostCall [ S2 , P3 ] = None ,
- 527 _typing_self : Literal [ False ] ,
- 528 provided : Literal [ False ] ,
- 529 ) -> NoInjectionBare [ P , R ] : ...
- 530
- 531 @ overload
- 532 def annotate_logs (
- 533 self ,
- 534 logger_name : str | None = None ,
- 535 * ,
- 536 success_info : bool = True , # pragma: no mutate
- 537 pre_call : PreCall [ S2 , P2 ] = None ,
- 538 post_call : PostCall [ S2 , P3 ] = None ,
- 539 _typing_self : Literal [ False ] ,
- 540 _typing_requested : Literal [ False ] ,
- 541 provided : Literal [ False ] ,
- 542 ) -> NoInjectionBare [ P , R ] : ...
- 543
- 544 ### Requested True
- 545 @ overload
- 546 def annotate_logs (
- 547 self ,
- 548 logger_name : str | None = None ,
- 549 * ,
- 550 success_info : bool = True , # pragma: no mutate
- 551 pre_call : PreCall [ S2 , P2 ] = None ,
- 552 post_call : PostCall [ S2 , P3 ] = None ,
- 553 _typing_requested : Literal [ True ] ,
- 554 ) -> InjectionSelf [ S , P , R ] : ...
- 555
- 556 @ overload
- 557 def annotate_logs (
- 558 self ,
- 559 logger_name : str | None = None ,
- 560 * ,
- 561 success_info : bool = True , # pragma: no mutate
- 562 pre_call : PreCall [ S2 , P2 ] = None ,
- 563 post_call : PostCall [ S2 , P3 ] = None ,
- 564 _typing_self : Literal [ True ] ,
- 565 _typing_requested : Literal [ True ] ,
- 566 ) -> InjectionSelf [ S , P , R ] : ...
- 567
- 568 @ overload
- 569 def annotate_logs (
- 570 self ,
- 571 logger_name : str | None = None ,
- 572 * ,
- 573 success_info : bool = True , # pragma: no mutate
- 574 pre_call : PreCall [ S2 , P2 ] = None ,
- 575 post_call : PostCall [ S2 , P3 ] = None ,
- 576 provided : Literal [ False ] ,
- 577 _typing_requested : Literal [ True ] ,
- 578 ) -> InjectionSelf [ S , P , R ] : ...
- 579
- 580 @ overload
- 581 def annotate_logs (
- 582 self ,
- 583 logger_name : str | None = None ,
- 584 * ,
- 585 success_info : bool = True , # pragma: no mutate
- 586 pre_call : PreCall [ S2 , P2 ] = None ,
- 587 post_call : PostCall [ S2 , P3 ] = None ,
- 588 _typing_self : Literal [ True ] ,
- 589 _typing_requested : Literal [ True ] ,
- 590 provided : Literal [ False ] ,
- 591 ) -> InjectionSelf [ S , P , R ] : ...
- 592
- 593 ### Provided True, Requested True
- 594 # Can't provide it if it was not requested,
- 595 # so no overloads for not requested, but provided
- 596 @ overload
- 597 def annotate_logs (
- 598 self ,
- 599 logger_name : str | None = None ,
- 600 * ,
- 601 success_info : bool = True , # pragma: no mutate
- 602 pre_call : PreCall [ S2 , P2 ] = None ,
- 603 post_call : PostCall [ S2 , P3 ] = None ,
- 604 _typing_requested : Literal [ True ] ,
- 605 provided : Literal [ True ] ,
- 606 ) -> InjectionSelfProvide [ S , P , R ] : ...
- 607
- 608 @ overload
- 609 def annotate_logs (
- 610 self ,
- 611 logger_name : str | None = None ,
- 612 * ,
- 613 success_info : bool = True , # pragma: no mutate
- 614 pre_call : PreCall [ S2 , P2 ] = None ,
- 615 post_call : PostCall [ S2 , P3 ] = None ,
- 616 _typing_self : Literal [ True ] ,
- 617 _typing_requested : Literal [ True ] ,
- 618 provided : Literal [ True ] ,
- 619 ) -> InjectionSelfProvide [ S , P , R ] : ...
- 620
- 621 ### Instance False, Requested True
- 622 @ overload
- 623 def annotate_logs (
- 624 self ,
- 625 logger_name : str | None = None ,
- 626 * ,
- 627 success_info : bool = True , # pragma: no mutate
- 628 pre_call : PreCall [ S2 , P2 ] = None ,
- 629 post_call : PostCall [ S2 , P3 ] = None ,
- 630 _typing_self : Literal [ False ] ,
- 631 _typing_requested : Literal [ True ] ,
- 632 ) -> InjectionBare [ P , R ] : ...
- 633
- 634 ### Instance False, Requested True, Provided True
- 635 # Same not as above that you can't provide if not requested
- 636 @ overload
- 637 def annotate_logs (
- 638 self ,
- 639 logger_name : str | None = None ,
- 640 * ,
- 641 success_info : bool = True , # pragma: no mutate
- 642 pre_call : PreCall [ S2 , P2 ] = None ,
- 643 post_call : PostCall [ S2 , P2 ] = None ,
- 644 _typing_self : Literal [ False ] ,
- 645 _typing_requested : Literal [ True ] ,
- 646 provided : Literal [ True ] ,
- 647 ) -> InjectionBareProvide [ P , R ] : ...
- 648
- 649 # Between the overloads and the two inner method definitions,
- 650 # there's not much I can do to reduce the complexity more.
- 651 # So, ignoring the complexity metric
- 652 def annotate_logs ( # noqa: C901
- 653 self ,
- 654 logger_name : str | None = None ,
- 655 * ,
- 656 success_info : bool = True ,
- 657 pre_call : PreCall [ S2 , P2 ] = None ,
- 658 post_call : PostCall [ S2 , P3 ] = None ,
- 659 provided : bool = False ,
- 660 _typing_self : bool = True , # pragma: no mutate
- 661 _typing_requested : bool = False , # pragma: no mutate
- 662 _typing_class : bool = False , # pragma: no mutate
- 663 ) -> Decorator [ S , P , R ] | Callable [ [ type [ C_co ] ] , type [ C_co ] ] :
- 664 """Log start and end of function and provide an annotated logger if requested.
- 665
- 666 Args:
- 667 ----
- 668 logger_name: Optional - Specify the name of the logger attached to
- 669 the decorated function.
- 670 success_info: Log success at an info level, if falsey success will be
- 671 logged at debug. Default: True
- 672 provided: Boolean that indicates the caller will be providing it's
- 673 own annotated_logger. Default: False
- 674 pre_call: Method that takes the same arguments as the decorated function
- 675 and does something. Called before the function and the `start` log message.
- 676 post_call: Method that takes the same arguments as the decorated function
- 677 and does something. Called after the function and before the `success`
- 678 log message or in the exception handling.
- 679 _typing_self: Used only for type hint overloads. Indicates that the
- 680 decorated method is an instance method and has a self parameter.
- 681 Default: True
- 682 _typing_requested: Used only for type hint overloads. Indicates that the
- 683 decorated method is expecting an annotated_logger to be provided.
- 684 Default: False
- 685
- 686 Notes:
- 687 -----
- 688 In order to fully support type hinting, the annotated_logger argument
- 689 must be the first argument (after self/cls). Type hinting will only work
- 690 correctly if the _typing arguments are set correctly, but the code will
- 691 work fine at runtime without the _typing arguments.
- 692
- 693 """
- 694
- 695 @ overload
- 696 def decorator (
- 697 wrapped : SelfLoggerAndParams [ S , P , R ] ,
- 698 ) -> SelfAndParams [ S , P , R ] | SelfLoggerAndParams [ S , P , R ] : ...
+ 355 def _action_annotation (
+ 356 self , function : Function [ S , P , R ] , key : str = "action"
+ 357 ) -> dict [ str , str ] :
+ 358 return { key : f" { function . __module__ } : { function . __qualname__ } " }
+ 359
+ 360 def generate_filter (
+ 361 self ,
+ 362 function : Function [ S , P , R ] | None = None ,
+ 363 cls : type [ C_co ] | None = None ,
+ 364 annotations : dict [ str , Any ] | None = None ,
+ 365 ) -> AnnotatedFilter :
+ 366 """Create a AnnotatedFilter with the correct annotations and plugins."""
+ 367 annotations_passed = annotations
+ 368 annotations = annotations or { }
+ 369 if function :
+ 370 annotations . update ( self . _action_annotation ( function ) )
+ 371 class_annotations = { }
+ 372 elif cls :
+ 373 class_annotations = { "class" : f" { cls . __module__ } : { cls . __qualname__ } " }
+ 374 else :
+ 375 class_annotations = { }
+ 376 if not annotations_passed :
+ 377 annotations . update ( self . annotations )
+ 378
+ 379 return AnnotatedFilter (
+ 380 annotations = annotations ,
+ 381 class_annotations = class_annotations ,
+ 382 plugins = self . plugins ,
+ 383 )
+ 384
+ 385 #### Defaults
+ 386 @ overload
+ 387 def annotate_logs (
+ 388 self ,
+ 389 logger_name : str | None = None ,
+ 390 * ,
+ 391 success_info : bool = True , # pragma: no mutate
+ 392 pre_call : PreCall [ S2 , P2 ] = None ,
+ 393 post_call : PostCall [ S2 , P3 ] = None ,
+ 394 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 395
+ 396 @ overload
+ 397 def annotate_logs (
+ 398 self ,
+ 399 logger_name : str | None = None ,
+ 400 * ,
+ 401 success_info : bool = True , # pragma: no mutate
+ 402 pre_call : PreCall [ S2 , P2 ] = None ,
+ 403 post_call : PostCall [ S2 , P3 ] = None ,
+ 404 _typing_requested : Literal [ False ] ,
+ 405 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 406
+ 407 @ overload
+ 408 def annotate_logs (
+ 409 self ,
+ 410 logger_name : str | None = None ,
+ 411 * ,
+ 412 success_info : bool = True , # pragma: no mutate
+ 413 pre_call : PreCall [ S2 , P2 ] = None ,
+ 414 post_call : PostCall [ S2 , P3 ] = None ,
+ 415 provided : Literal [ False ] ,
+ 416 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 417
+ 418 @ overload
+ 419 def annotate_logs (
+ 420 self ,
+ 421 logger_name : str | None = None ,
+ 422 * ,
+ 423 success_info : bool = True , # pragma: no mutate
+ 424 pre_call : PreCall [ S2 , P2 ] = None ,
+ 425 post_call : PostCall [ S2 , P3 ] = None ,
+ 426 _typing_self : Literal [ True ] ,
+ 427 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 428
+ 429 @ overload
+ 430 def annotate_logs (
+ 431 self ,
+ 432 logger_name : str | None = None ,
+ 433 * ,
+ 434 success_info : bool = True , # pragma: no mutate
+ 435 pre_call : PreCall [ S2 , P2 ] = None ,
+ 436 post_call : PostCall [ S2 , P3 ] = None ,
+ 437 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 438
+ 439 @ overload
+ 440 def annotate_logs (
+ 441 self ,
+ 442 logger_name : str | None = None ,
+ 443 * ,
+ 444 success_info : bool = True , # pragma: no mutate
+ 445 pre_call : PreCall [ S2 , P2 ] = None ,
+ 446 post_call : PostCall [ S2 , P3 ] = None ,
+ 447 _typing_self : Literal [ True ] ,
+ 448 _typing_requested : Literal [ False ] ,
+ 449 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 450
+ 451 @ overload
+ 452 def annotate_logs (
+ 453 self ,
+ 454 logger_name : str | None = None ,
+ 455 * ,
+ 456 success_info : bool = True , # pragma: no mutate
+ 457 pre_call : PreCall [ S2 , P2 ] = None ,
+ 458 post_call : PostCall [ S2 , P3 ] = None ,
+ 459 provided : Literal [ False ] ,
+ 460 _typing_requested : Literal [ False ] ,
+ 461 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 462
+ 463 @ overload
+ 464 def annotate_logs (
+ 465 self ,
+ 466 logger_name : str | None = None ,
+ 467 * ,
+ 468 success_info : bool = True , # pragma: no mutate
+ 469 pre_call : PreCall [ S2 , P2 ] = None ,
+ 470 post_call : PostCall [ S2 , P3 ] = None ,
+ 471 _typing_self : Literal [ True ] ,
+ 472 provided : Literal [ False ] ,
+ 473 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 474
+ 475 @ overload
+ 476 def annotate_logs (
+ 477 self ,
+ 478 logger_name : str | None = None ,
+ 479 * ,
+ 480 success_info : bool = True , # pragma: no mutate
+ 481 pre_call : PreCall [ S2 , P2 ] = None ,
+ 482 post_call : PostCall [ S2 , P3 ] = None ,
+ 483 _typing_self : Literal [ True ] ,
+ 484 _typing_requested : Literal [ False ] ,
+ 485 provided : Literal [ False ] ,
+ 486 ) -> NoInjectionSelf [ S , P , R ] : ...
+ 487
+ 488 #### Class True
+ 489 @ overload
+ 490 def annotate_logs (
+ 491 self ,
+ 492 logger_name : str | None = None ,
+ 493 * ,
+ 494 _typing_class : Literal [ True ] ,
+ 495 success_info : bool = True , # pragma: no mutate
+ 496 pre_call : PreCall [ S , P2 ] = None ,
+ 497 post_call : PostCall [ S , P3 ] = None ,
+ 498 ) -> Callable [ [ type [ C_co ] ] , type [ C_co ] ] : ...
+ 499
+ 500 ### Instance False
+ 501 @ overload
+ 502 def annotate_logs (
+ 503 self ,
+ 504 logger_name : str | None = None ,
+ 505 * ,
+ 506 success_info : bool = True , # pragma: no mutate
+ 507 pre_call : PreCall [ S2 , P2 ] = None ,
+ 508 post_call : PostCall [ S2 , P3 ] = None ,
+ 509 _typing_self : Literal [ False ] ,
+ 510 ) -> NoInjectionBare [ P , R ] : ...
+ 511
+ 512 @ overload
+ 513 def annotate_logs (
+ 514 self ,
+ 515 logger_name : str | None = None ,
+ 516 * ,
+ 517 success_info : bool = True , # pragma: no mutate
+ 518 pre_call : PreCall [ S2 , P2 ] = None ,
+ 519 post_call : PostCall [ S2 , P3 ] = None ,
+ 520 _typing_self : Literal [ False ] ,
+ 521 _typing_requested : Literal [ False ] ,
+ 522 ) -> NoInjectionBare [ P , R ] : ...
+ 523
+ 524 @ overload
+ 525 def annotate_logs (
+ 526 self ,
+ 527 logger_name : str | None = None ,
+ 528 * ,
+ 529 success_info : bool = True , # pragma: no mutate
+ 530 pre_call : PreCall [ S2 , P2 ] = None ,
+ 531 post_call : PostCall [ S2 , P3 ] = None ,
+ 532 _typing_self : Literal [ False ] ,
+ 533 provided : Literal [ False ] ,
+ 534 ) -> NoInjectionBare [ P , R ] : ...
+ 535
+ 536 @ overload
+ 537 def annotate_logs (
+ 538 self ,
+ 539 logger_name : str | None = None ,
+ 540 * ,
+ 541 success_info : bool = True , # pragma: no mutate
+ 542 pre_call : PreCall [ S2 , P2 ] = None ,
+ 543 post_call : PostCall [ S2 , P3 ] = None ,
+ 544 _typing_self : Literal [ False ] ,
+ 545 _typing_requested : Literal [ False ] ,
+ 546 provided : Literal [ False ] ,
+ 547 ) -> NoInjectionBare [ P , R ] : ...
+ 548
+ 549 ### Requested True
+ 550 @ overload
+ 551 def annotate_logs (
+ 552 self ,
+ 553 logger_name : str | None = None ,
+ 554 * ,
+ 555 success_info : bool = True , # pragma: no mutate
+ 556 pre_call : PreCall [ S2 , P2 ] = None ,
+ 557 post_call : PostCall [ S2 , P3 ] = None ,
+ 558 _typing_requested : Literal [ True ] ,
+ 559 ) -> InjectionSelf [ S , P , R ] : ...
+ 560
+ 561 @ overload
+ 562 def annotate_logs (
+ 563 self ,
+ 564 logger_name : str | None = None ,
+ 565 * ,
+ 566 success_info : bool = True , # pragma: no mutate
+ 567 pre_call : PreCall [ S2 , P2 ] = None ,
+ 568 post_call : PostCall [ S2 , P3 ] = None ,
+ 569 _typing_self : Literal [ True ] ,
+ 570 _typing_requested : Literal [ True ] ,
+ 571 ) -> InjectionSelf [ S , P , R ] : ...
+ 572
+ 573 @ overload
+ 574 def annotate_logs (
+ 575 self ,
+ 576 logger_name : str | None = None ,
+ 577 * ,
+ 578 success_info : bool = True , # pragma: no mutate
+ 579 pre_call : PreCall [ S2 , P2 ] = None ,
+ 580 post_call : PostCall [ S2 , P3 ] = None ,
+ 581 provided : Literal [ False ] ,
+ 582 _typing_requested : Literal [ True ] ,
+ 583 ) -> InjectionSelf [ S , P , R ] : ...
+ 584
+ 585 @ overload
+ 586 def annotate_logs (
+ 587 self ,
+ 588 logger_name : str | None = None ,
+ 589 * ,
+ 590 success_info : bool = True , # pragma: no mutate
+ 591 pre_call : PreCall [ S2 , P2 ] = None ,
+ 592 post_call : PostCall [ S2 , P3 ] = None ,
+ 593 _typing_self : Literal [ True ] ,
+ 594 _typing_requested : Literal [ True ] ,
+ 595 provided : Literal [ False ] ,
+ 596 ) -> InjectionSelf [ S , P , R ] : ...
+ 597
+ 598 ### Provided True, Requested True
+ 599 # Can't provide it if it was not requested,
+ 600 # so no overloads for not requested, but provided
+ 601 @ overload
+ 602 def annotate_logs (
+ 603 self ,
+ 604 logger_name : str | None = None ,
+ 605 * ,
+ 606 success_info : bool = True , # pragma: no mutate
+ 607 pre_call : PreCall [ S2 , P2 ] = None ,
+ 608 post_call : PostCall [ S2 , P3 ] = None ,
+ 609 _typing_requested : Literal [ True ] ,
+ 610 provided : Literal [ True ] ,
+ 611 ) -> InjectionSelfProvide [ S , P , R ] : ...
+ 612
+ 613 @ overload
+ 614 def annotate_logs (
+ 615 self ,
+ 616 logger_name : str | None = None ,
+ 617 * ,
+ 618 success_info : bool = True , # pragma: no mutate
+ 619 pre_call : PreCall [ S2 , P2 ] = None ,
+ 620 post_call : PostCall [ S2 , P3 ] = None ,
+ 621 _typing_self : Literal [ True ] ,
+ 622 _typing_requested : Literal [ True ] ,
+ 623 provided : Literal [ True ] ,
+ 624 ) -> InjectionSelfProvide [ S , P , R ] : ...
+ 625
+ 626 ### Instance False, Requested True
+ 627 @ overload
+ 628 def annotate_logs (
+ 629 self ,
+ 630 logger_name : str | None = None ,
+ 631 * ,
+ 632 success_info : bool = True , # pragma: no mutate
+ 633 pre_call : PreCall [ S2 , P2 ] = None ,
+ 634 post_call : PostCall [ S2 , P3 ] = None ,
+ 635 _typing_self : Literal [ False ] ,
+ 636 _typing_requested : Literal [ True ] ,
+ 637 ) -> InjectionBare [ P , R ] : ...
+ 638
+ 639 ### Instance False, Requested True, Provided True
+ 640 # Same not as above that you can't provide if not requested
+ 641 @ overload
+ 642 def annotate_logs (
+ 643 self ,
+ 644 logger_name : str | None = None ,
+ 645 * ,
+ 646 success_info : bool = True , # pragma: no mutate
+ 647 pre_call : PreCall [ S2 , P2 ] = None ,
+ 648 post_call : PostCall [ S2 , P2 ] = None ,
+ 649 _typing_self : Literal [ False ] ,
+ 650 _typing_requested : Literal [ True ] ,
+ 651 provided : Literal [ True ] ,
+ 652 ) -> InjectionBareProvide [ P , R ] : ...
+ 653
+ 654 # Between the overloads and the two inner method definitions,
+ 655 # there's not much I can do to reduce the complexity more.
+ 656 # So, ignoring the complexity metric
+ 657 def annotate_logs ( # noqa: C901
+ 658 self ,
+ 659 logger_name : str | None = None ,
+ 660 * ,
+ 661 success_info : bool = True ,
+ 662 pre_call : PreCall [ S2 , P2 ] = None ,
+ 663 post_call : PostCall [ S2 , P3 ] = None ,
+ 664 provided : bool = False ,
+ 665 _typing_self : bool = True , # pragma: no mutate
+ 666 _typing_requested : bool = False , # pragma: no mutate
+ 667 _typing_class : bool = False , # pragma: no mutate
+ 668 ) -> Decorator [ S , P , R ] | Callable [ [ type [ C_co ] ] , type [ C_co ] ] :
+ 669 """Log start and end of function and provide an annotated logger if requested.
+ 670
+ 671 Args:
+ 672 ----
+ 673 logger_name: Optional - Specify the name of the logger attached to
+ 674 the decorated function.
+ 675 success_info: Log success at an info level, if falsey success will be
+ 676 logged at debug. Default: True
+ 677 provided: Boolean that indicates the caller will be providing it's
+ 678 own annotated_logger. Default: False
+ 679 pre_call: Method that takes the same arguments as the decorated function
+ 680 and does something. Called before the function and the `start` log message.
+ 681 post_call: Method that takes the same arguments as the decorated function
+ 682 and does something. Called after the function and before the `success`
+ 683 log message or in the exception handling.
+ 684 _typing_self: Used only for type hint overloads. Indicates that the
+ 685 decorated method is an instance method and has a self parameter.
+ 686 Default: True
+ 687 _typing_requested: Used only for type hint overloads. Indicates that the
+ 688 decorated method is expecting an annotated_logger to be provided.
+ 689 Default: False
+ 690
+ 691 Notes:
+ 692 -----
+ 693 In order to fully support type hinting, the annotated_logger argument
+ 694 must be the first argument (after self/cls). Type hinting will only work
+ 695 correctly if the _typing arguments are set correctly, but the code will
+ 696 work fine at runtime without the _typing arguments.
+ 697
+ 698 """
699
700 @ overload
701 def decorator (
- 702 wrapped : LoggerAndParams [ P , R ] ,
- 703 ) -> ParamsOnly [ P , R ] | LoggerAndParams [ P , R ] : ...
+ 702 wrapped : SelfLoggerAndParams [ S , P , R ] ,
+ 703 ) -> SelfAndParams [ S , P , R ] | SelfLoggerAndParams [ S , P , R ] : ...
704
705 @ overload
706 def decorator (
- 707 wrapped : SelfAndParams [ S , P , R ] ,
- 708 ) -> SelfAndParams [ S , P , R ] : ...
+ 707 wrapped : LoggerAndParams [ P , R ] ,
+ 708 ) -> ParamsOnly [ P , R ] | LoggerAndParams [ P , R ] : ...
709
710 @ overload
711 def decorator (
- 712 wrapped : ParamsOnly [ P , R ] ,
- 713 ) -> ParamsOnly [ P , R ] | Empty [ R ] : ...
+ 712 wrapped : SelfAndParams [ S , P , R ] ,
+ 713 ) -> SelfAndParams [ S , P , R ] : ...
714
715 @ overload
- 716 def decorator ( wrapped : type [ C_co ] ) -> Callable [ P , AnnotatedClass [ C_co ] ] : ...
- 717
- 718 def decorator ( # noqa: C901
- 719 wrapped : Function [ S , P , R ] | type [ C_co ] ,
- 720 ) -> Function [ S , P , R ] | Callable [ P , AnnotatedClass [ C_co ] ] :
- 721 if isinstance ( wrapped , type ) :
+ 716 def decorator (
+ 717 wrapped : ParamsOnly [ P , R ] ,
+ 718 ) -> ParamsOnly [ P , R ] | Empty [ R ] : ...
+ 719
+ 720 @ overload
+ 721 def decorator ( wrapped : type [ C_co ] ) -> Callable [ P , AnnotatedClass [ C_co ] ] : ...
722
- 723 def wrap_class (
- 724 * args : P . args , ** kwargs : P . kwargs
- 725 ) -> AnnotatedClass [ C_co ] :
- 726 logger = self . _generate_logger (
- 727 cls = wrapped , logger_base_name = logger_name
- 728 )
- 729 logger . debug ( "init" )
- 730 new = cast ( AnnotatedClass [ C_co ] , wrapped ( * args , ** kwargs ) )
- 731 new . annotated_logger = logger
- 732 return new
- 733
- 734 return wrap_class
- 735
- 736 ( remove_args , inject_logger ) = self . _determine_signature_adjustments (
- 737 wrapped , provided = provided
- 738 )
- 739
- 740 @ wraps (
- 741 wrapped ,
- 742 remove_args = remove_args ,
+ 723 def decorator ( # noqa: C901
+ 724 wrapped : Function [ S , P , R ] | type [ C_co ] ,
+ 725 ) -> Function [ S , P , R ] | Callable [ P , AnnotatedClass [ C_co ] ] :
+ 726 if isinstance ( wrapped , type ) :
+ 727
+ 728 def wrap_class (
+ 729 * args : P . args , ** kwargs : P . kwargs
+ 730 ) -> AnnotatedClass [ C_co ] :
+ 731 logger = self . _generate_logger (
+ 732 cls = wrapped , logger_base_name = logger_name
+ 733 )
+ 734 logger . debug ( "init" )
+ 735 new = cast ( AnnotatedClass [ C_co ] , wrapped ( * args , ** kwargs ) )
+ 736 new . annotated_logger = logger
+ 737 return new
+ 738
+ 739 return wrap_class
+ 740
+ 741 ( remove_args , inject_logger ) = self . _determine_signature_adjustments (
+ 742 wrapped , provided = provided
743 )
- 744 def wrap_function ( * args : P . args , ** kwargs : P . kwargs ) -> R :
- 745 __tracebackhide__ = True # pragma: no mutate
- 746
- 747 post_call_attempted = False # pragma: no mutate
- 748
- 749 new_args , new_kwargs , logger , pre_execution_annotations = inject_logger (
- 750 list ( args ) , kwargs , logger_base_name = logger_name
- 751 )
- 752 try :
- 753 start_time = time . perf_counter ( )
- 754 if pre_call :
- 755 pre_call ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
- 756 logger . debug ( "start" )
- 757
- 758 result = wrapped ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
- 759 logger . annotate ( success = True )
- 760 if post_call :
- 761 post_call_attempted = True
- 762 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
- 763 end_time = time . perf_counter ( )
- 764 logger . annotate ( run_time = f" { end_time - start_time : .1f } " )
- 765 with contextlib . suppress ( TypeError ) :
- 766 logger . annotate ( count = len ( result ) ) # pyright: ignore[reportArgumentType]
- 767
- 768 if success_info :
- 769 logger . info ( "success" )
- 770 else :
- 771 logger . debug ( "success" )
+ 744
+ 745 @ wraps (
+ 746 wrapped ,
+ 747 remove_args = remove_args ,
+ 748 )
+ 749 def wrap_function ( * args : P . args , ** kwargs : P . kwargs ) -> R :
+ 750 __tracebackhide__ = True # pragma: no mutate
+ 751
+ 752 post_call_attempted = False # pragma: no mutate
+ 753
+ 754 new_args , new_kwargs , logger , pre_execution_annotations = inject_logger (
+ 755 list ( args ) , kwargs , logger_base_name = logger_name
+ 756 )
+ 757 try :
+ 758 start_time = time . perf_counter ( )
+ 759 if pre_call :
+ 760 pre_call ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 761 logger . debug ( "start" )
+ 762
+ 763 result = wrapped ( * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 764 logger . annotate ( success = True )
+ 765 if post_call :
+ 766 post_call_attempted = True
+ 767 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 768 end_time = time . perf_counter ( )
+ 769 logger . annotate ( run_time = f" { end_time - start_time : .1f } " )
+ 770 with contextlib . suppress ( TypeError ) :
+ 771 logger . annotate ( count = len ( result ) ) # pyright: ignore[reportArgumentType]
772
- 773 # If we were provided with a logger object, set the annotations
- 774 # back to what they were before the wrapped method was called.
- 775 if pre_execution_annotations :
- 776 logger . filter . annotations = pre_execution_annotations
- 777 except Exception as e :
- 778 for plugin in logger . filter . plugins :
- 779 logger = plugin . uncaught_exception ( e , logger )
- 780 logger . exception (
- 781 "Uncaught Exception in logged function" ,
- 782 )
- 783 if post_call and not post_call_attempted :
- 784 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
- 785 raise
- 786 return result
- 787
- 788 return wrap_function
- 789
- 790 return decorator
- 791
- 792 def _determine_signature_adjustments (
- 793 self ,
- 794 function : Function [ S , P , R ] ,
- 795 * ,
- 796 provided : bool ,
- 797 ) -> tuple [
- 798 list [ str ] ,
- 799 Callable [
- 800 Concatenate [ list [ Any ] , dict [ str , Any ] , ... ] ,
- 801 tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] ,
- 802 ] ,
- 803 ] :
- 804 written_signature = inspect . signature ( function )
- 805 logger_requested = False # pragma: no mutate
- 806 remove_args = [ ]
- 807 index , instance_method = self . _check_parameters_for_self_and_cls (
- 808 written_signature
- 809 )
- 810 if "annotated_logger" in written_signature . parameters :
- 811 if list ( written_signature . parameters . keys ( ) ) [ index ] != "annotated_logger" :
- 812 error_message = "annotated_logger must be the first argument"
- 813 raise TypeError ( error_message )
- 814
- 815 logger_requested = True
- 816 if not provided :
- 817 remove_args = [ "annotated_logger" ]
- 818
- 819 def inject_logger (
- 820 args : list [ Any ] ,
- 821 kwargs : dict [ str , Any ] ,
- 822 logger_base_name : str | None = None ,
- 823 ) -> tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] :
- 824 if not logger_requested :
- 825 logger = self . _generate_logger (
- 826 function , logger_base_name = logger_base_name
- 827 )
- 828 return ( args , kwargs , logger , None )
- 829
- 830 by_index = False # pragma: no mutate
- 831 # Check for a var positional or positional only
- 832 # If present that means we'll have values in args when invoking
- 833 # but, if not everything will be in kwargs
- 834 for v in written_signature . parameters . values ( ) :
- 835 if v . kind == inspect . Parameter . VAR_POSITIONAL :
- 836 by_index = True
- 837
- 838 new_args = copy ( args )
- 839 new_kwargs = copy ( kwargs )
- 840 if by_index :
- 841 logger , annotations , new_args = self . _inject_by_index (
- 842 provided = provided ,
- 843 instance_method = instance_method ,
- 844 args = new_args ,
- 845 index = index ,
- 846 function = function ,
- 847 logger_base_name = logger_base_name ,
- 848 )
- 849 else :
- 850 logger , annotations , new_kwargs = self . _inject_by_kwarg (
- 851 provided = provided ,
- 852 instance_method = instance_method ,
- 853 kwargs = new_kwargs ,
- 854 function = function ,
- 855 logger_base_name = logger_base_name ,
- 856 )
- 857
- 858 return new_args , new_kwargs , logger , annotations
- 859
- 860 return remove_args , inject_logger
- 861
- 862 def _inject_by_kwarg (
- 863 self ,
- 864 * ,
- 865 provided : bool ,
- 866 instance_method : bool ,
- 867 function : Function [ S , P , R ] ,
- 868 kwargs : dict [ str , Any ] ,
- 869 logger_base_name : str | None = None ,
- 870 ) -> tuple [ AnnotatedAdapter , Annotations | None , dict [ str , Any ] ] :
- 871 if provided :
- 872 instance = kwargs [ "annotated_logger" ]
- 873 elif instance_method :
- 874 instance = kwargs [ "self" ]
- 875 else :
- 876 instance = False # pragma: no mutate
- 877 logger , annotations = self . _pick_correct_logger (
- 878 function , instance , logger_base_name = logger_base_name
- 879 )
- 880 if not provided :
- 881 kwargs [ "annotated_logger" ] = logger
- 882
- 883 return logger , annotations , kwargs
- 884
- 885 def _inject_by_index ( # noqa: PLR0913
- 886 self ,
- 887 * ,
- 888 provided : bool ,
- 889 instance_method : bool ,
- 890 function : Function [ S , P , R ] ,
- 891 args : list [ Any ] ,
- 892 index : int ,
- 893 logger_base_name : str | None = None ,
- 894 ) -> tuple [ AnnotatedAdapter , Annotations | None , list [ Any ] ] :
- 895 if provided :
- 896 instance = args [ index ]
- 897 elif instance_method :
- 898 instance = args [ 0 ]
- 899 else :
- 900 instance = False # pragma: no mutate
- 901 logger , annotations = self . _pick_correct_logger (
- 902 function , instance , logger_base_name = logger_base_name
- 903 )
- 904 if not provided :
- 905 args . insert ( index , logger )
- 906 return logger , annotations , args
- 907
- 908 def _check_parameters_for_self_and_cls (
- 909 self , sig : inspect . Signature
- 910 ) -> tuple [ int , bool ] :
- 911 parameters = sig . parameters
- 912 index = 0
- 913 instance_method = False
- 914 if "self" in parameters :
- 915 index = 1
- 916 instance_method = True
- 917 if "cls" in parameters :
- 918 index = 1
- 919
- 920 return index , instance_method
- 921
- 922 def _pick_correct_logger (
- 923 self ,
- 924 function : Function [ S , P , R ] ,
- 925 instance : object | bool ,
- 926 logger_base_name : str | None = None ,
- 927 ) -> tuple [ AnnotatedAdapter , Annotations | None ] :
- 928 """Use the instance's logger and annotations if present."""
- 929 if instance and hasattr ( instance , "annotated_logger" ) :
- 930 logger = instance . annotated_logger # pyright: ignore[reportAttributeAccessIssue]
- 931 annotations = copy ( logger . filter . annotations )
- 932 logger . filter . annotations . update ( self . _action_annotation ( function ) )
- 933 return ( logger , annotations )
- 934
- 935 if isinstance ( instance , AnnotatedAdapter ) :
- 936 logger = instance
- 937 annotations = copy ( logger . filter . annotations )
- 938 logger . filter . annotations . update (
- 939 self . _action_annotation ( function , key = "subaction" )
- 940 )
- 941 return ( logger , annotations )
- 942
- 943 return (
- 944 self . _generate_logger ( function , logger_base_name = logger_base_name ) ,
- 945 None ,
- 946 )
+ 773 if success_info :
+ 774 logger . info ( "success" )
+ 775 else :
+ 776 logger . debug ( "success" )
+ 777
+ 778 # If we were provided with a logger object, set the annotations
+ 779 # back to what they were before the wrapped method was called.
+ 780 if pre_execution_annotations :
+ 781 logger . filter . annotations = pre_execution_annotations
+ 782 except Exception as e :
+ 783 for plugin in logger . filter . plugins :
+ 784 logger = plugin . uncaught_exception ( e , logger )
+ 785 logger . exception (
+ 786 "Uncaught Exception in logged function" ,
+ 787 )
+ 788 if post_call and not post_call_attempted :
+ 789 _attempt_post_call ( post_call , logger , * new_args , ** new_kwargs ) # pyright: ignore[reportCallIssue]
+ 790 raise
+ 791 return result
+ 792
+ 793 return wrap_function
+ 794
+ 795 return decorator
+ 796
+ 797 def _determine_signature_adjustments (
+ 798 self ,
+ 799 function : Function [ S , P , R ] ,
+ 800 * ,
+ 801 provided : bool ,
+ 802 ) -> tuple [
+ 803 list [ str ] ,
+ 804 Callable [
+ 805 Concatenate [ list [ Any ] , dict [ str , Any ] , ... ] ,
+ 806 tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] ,
+ 807 ] ,
+ 808 ] :
+ 809 written_signature = inspect . signature ( function )
+ 810 logger_requested = False # pragma: no mutate
+ 811 remove_args = [ ]
+ 812 index , instance_method = self . _check_parameters_for_self_and_cls (
+ 813 written_signature
+ 814 )
+ 815 if "annotated_logger" in written_signature . parameters :
+ 816 if list ( written_signature . parameters . keys ( ) ) [ index ] != "annotated_logger" :
+ 817 error_message = "annotated_logger must be the first argument"
+ 818 raise TypeError ( error_message )
+ 819
+ 820 logger_requested = True
+ 821 if not provided :
+ 822 remove_args = [ "annotated_logger" ]
+ 823
+ 824 def inject_logger (
+ 825 args : list [ Any ] ,
+ 826 kwargs : dict [ str , Any ] ,
+ 827 logger_base_name : str | None = None ,
+ 828 ) -> tuple [ list [ Any ] , dict [ str , Any ] , AnnotatedAdapter , Annotations | None ] :
+ 829 if not logger_requested :
+ 830 logger = self . _generate_logger (
+ 831 function , logger_base_name = logger_base_name
+ 832 )
+ 833 return ( args , kwargs , logger , None )
+ 834
+ 835 by_index = False # pragma: no mutate
+ 836 # Check for a var positional or positional only
+ 837 # If present that means we'll have values in args when invoking
+ 838 # but, if not everything will be in kwargs
+ 839 for v in written_signature . parameters . values ( ) :
+ 840 if v . kind == inspect . Parameter . VAR_POSITIONAL :
+ 841 by_index = True
+ 842
+ 843 new_args = copy ( args )
+ 844 new_kwargs = copy ( kwargs )
+ 845 if by_index :
+ 846 logger , annotations , new_args = self . _inject_by_index (
+ 847 provided = provided ,
+ 848 instance_method = instance_method ,
+ 849 args = new_args ,
+ 850 index = index ,
+ 851 function = function ,
+ 852 logger_base_name = logger_base_name ,
+ 853 )
+ 854 else :
+ 855 logger , annotations , new_kwargs = self . _inject_by_kwarg (
+ 856 provided = provided ,
+ 857 instance_method = instance_method ,
+ 858 kwargs = new_kwargs ,
+ 859 function = function ,
+ 860 logger_base_name = logger_base_name ,
+ 861 )
+ 862
+ 863 return new_args , new_kwargs , logger , annotations
+ 864
+ 865 return remove_args , inject_logger
+ 866
+ 867 def _inject_by_kwarg (
+ 868 self ,
+ 869 * ,
+ 870 provided : bool ,
+ 871 instance_method : bool ,
+ 872 function : Function [ S , P , R ] ,
+ 873 kwargs : dict [ str , Any ] ,
+ 874 logger_base_name : str | None = None ,
+ 875 ) -> tuple [ AnnotatedAdapter , Annotations | None , dict [ str , Any ] ] :
+ 876 if provided :
+ 877 instance = kwargs [ "annotated_logger" ]
+ 878 elif instance_method :
+ 879 instance = kwargs [ "self" ]
+ 880 else :
+ 881 instance = False # pragma: no mutate
+ 882 logger , annotations = self . _pick_correct_logger (
+ 883 function , instance , logger_base_name = logger_base_name
+ 884 )
+ 885 if not provided :
+ 886 kwargs [ "annotated_logger" ] = logger
+ 887
+ 888 return logger , annotations , kwargs
+ 889
+ 890 def _inject_by_index ( # noqa: PLR0913
+ 891 self ,
+ 892 * ,
+ 893 provided : bool ,
+ 894 instance_method : bool ,
+ 895 function : Function [ S , P , R ] ,
+ 896 args : list [ Any ] ,
+ 897 index : int ,
+ 898 logger_base_name : str | None = None ,
+ 899 ) -> tuple [ AnnotatedAdapter , Annotations | None , list [ Any ] ] :
+ 900 if provided :
+ 901 instance = args [ index ]
+ 902 elif instance_method :
+ 903 instance = args [ 0 ]
+ 904 else :
+ 905 instance = False # pragma: no mutate
+ 906 logger , annotations = self . _pick_correct_logger (
+ 907 function , instance , logger_base_name = logger_base_name
+ 908 )
+ 909 if not provided :
+ 910 args . insert ( index , logger )
+ 911 return logger , annotations , args
+ 912
+ 913 def _check_parameters_for_self_and_cls (
+ 914 self , sig : inspect . Signature
+ 915 ) -> tuple [ int , bool ] :
+ 916 parameters = sig . parameters
+ 917 index = 0
+ 918 instance_method = False
+ 919 if "self" in parameters :
+ 920 index = 1
+ 921 instance_method = True
+ 922 if "cls" in parameters :
+ 923 index = 1
+ 924
+ 925 return index , instance_method
+ 926
+ 927 def _pick_correct_logger (
+ 928 self ,
+ 929 function : Function [ S , P , R ] ,
+ 930 instance : object | bool ,
+ 931 logger_base_name : str | None = None ,
+ 932 ) -> tuple [ AnnotatedAdapter , Annotations | None ] :
+ 933 """Use the instance's logger and annotations if present."""
+ 934 if instance and hasattr ( instance , "annotated_logger" ) :
+ 935 logger = instance . annotated_logger # pyright: ignore[reportAttributeAccessIssue]
+ 936 annotations = copy ( logger . filter . annotations )
+ 937 logger . filter . annotations . update ( self . _action_annotation ( function ) )
+ 938 return ( logger , annotations )
+ 939
+ 940 if isinstance ( instance , AnnotatedAdapter ) :
+ 941 logger = instance
+ 942 annotations = copy ( logger . filter . annotations )
+ 943 logger . filter . annotations . update (
+ 944 self . _action_annotation ( function , key = "subaction" )
+ 945 )
+ 946 return ( logger , annotations )
947
- 948
- 949 def _attempt_post_call (
- 950 post_call : Callable [ P , None ] ,
- 951 logger : AnnotatedAdapter ,
- 952 * args : P . args ,
- 953 ** kwargs : P . kwargs ,
- 954 ) -> None :
- 955 try :
- 956 if post_call :
- 957 post_call ( * args , ** kwargs ) # pyright: ignore[reportCallIssue]
- 958 except Exception :
- 959 logger . annotate ( success = False )
- 960 logger . exception ( "Post call failed" )
- 961 raise
+ 948 return (
+ 949 self . _generate_logger ( function , logger_base_name = logger_base_name ) ,
+ 950 None ,
+ 951 )
+ 952
+ 953
+ 954 def _attempt_post_call (
+ 955 post_call : Callable [ P , None ] ,
+ 956 logger : AnnotatedAdapter ,
+ 957 * args : P . args ,
+ 958 ** kwargs : P . kwargs ,
+ 959 ) -> None :
+ 960 try :
+ 961 if post_call :
+ 962 post_call ( * args , ** kwargs ) # pyright: ignore[reportCallIssue]
+ 963 except Exception :
+ 964 logger . annotate ( success = False )
+ 965 logger . exception ( "Post call failed" )
+ 966 raise
@@ -1050,7 +1055,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index c537bc1..ff327b4 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index f6f2667..c90457b 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -342,7 +342,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
index 5722ae8..cfe94e0 100644
--- a/htmlcov/z_beb44c9891d1179a_plugins_py.html
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
@@ -297,7 +297,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-11 22:52 +0000
+ created at 2024-12-12 15:42 +0000
From 4f24d140d69629033d2d4b7bba308ad9ec73ea57 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 16 Dec 2024 17:38:44 +0000
Subject: [PATCH 06/11] Update coverage data
---
data.json | 2 +-
htmlcov/class_index.html | 4 ++--
htmlcov/function_index.html | 4 ++--
htmlcov/index.html | 4 ++--
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 ++--
htmlcov/z_70983d692f648185_api_py.html | 4 ++--
htmlcov/z_70983d692f648185_calculator_py.html | 4 ++--
htmlcov/z_70983d692f648185_default_py.html | 4 ++--
htmlcov/z_70983d692f648185_invalid_order_py.html | 4 ++--
htmlcov/z_70983d692f648185_logging_config_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a___init___py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_mocks_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 ++--
15 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/data.json b/data.json
index 617873d..e91e9b5 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-12T15:42:24.657877", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-16T17:38:43.098502", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index 26d285b..61ee9a1 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index 61e913e..a8d75b1 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index ce9169a..dd28a0f 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index a9467ef..79b5009 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"921664f54f86e39d38d2850cf9077bba","files":{"z_beb44c9891d1179a___init___py":{"hash":"fd7c8bda65ba92e0aa95845b69b94b37","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"87a648e551e994b0e03fca5e2bed3b6d","files":{"z_beb44c9891d1179a___init___py":{"hash":"fd7c8bda65ba92e0aa95845b69b94b37","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index 8e53a7d..ac899d1 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index 2ecadd3..07beadb 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index 25e6a17..7d1d98b 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index 180c162..dabed9c 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index 2118a02..4d1d9dd 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index 0ca1540..3eec96e 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index 7f2eec8..196f922 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -1055,7 +1055,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index ff327b4..c6c2582 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index c90457b..d4fd706 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -342,7 +342,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
index cfe94e0..d2c636e 100644
--- a/htmlcov/z_beb44c9891d1179a_plugins_py.html
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
@@ -297,7 +297,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-12 15:42 +0000
+ created at 2024-12-16 17:38 +0000
From 4fd9b605797035a316b6e424aacb82c183d96488 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 17 Dec 2024 21:16:00 +0000
Subject: [PATCH 07/11] Update coverage data
---
data.json | 2 +-
htmlcov/class_index.html | 4 ++--
htmlcov/function_index.html | 4 ++--
htmlcov/index.html | 4 ++--
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 ++--
htmlcov/z_70983d692f648185_api_py.html | 4 ++--
htmlcov/z_70983d692f648185_calculator_py.html | 4 ++--
htmlcov/z_70983d692f648185_default_py.html | 4 ++--
htmlcov/z_70983d692f648185_invalid_order_py.html | 4 ++--
htmlcov/z_70983d692f648185_logging_config_py.html | 8 ++++----
htmlcov/z_beb44c9891d1179a___init___py.html | 8 ++++----
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_mocks_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 ++--
15 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/data.json b/data.json
index e91e9b5..93eb7ea 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-16T17:38:43.098502", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-17T21:15:59.065786", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index 61ee9a1..23da790 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index a8d75b1..482ecab 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index dd28a0f..b3b10fb 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index 79b5009..b7d1369 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"87a648e551e994b0e03fca5e2bed3b6d","files":{"z_beb44c9891d1179a___init___py":{"hash":"fd7c8bda65ba92e0aa95845b69b94b37","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"4162095b34099063dedfa0eeb8af4288","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"d7a23feea9cb097bf07aed97ce54f896","files":{"z_beb44c9891d1179a___init___py":{"hash":"0042e9ccafa8e28cb0b2a634f002925c","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"fa9b307aa118d1ce0e1090be378700c6","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index ac899d1..c448f5d 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index 07beadb..a92d497 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index 7d1d98b..c76f55f 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index dabed9c..5a6039f 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index 4d1d9dd..cfc4af8 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index 3eec96e..3b49978 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -175,7 +175,7 @@
93 } ,
94 "formatters" : {
95 "logging_config.annotated_formatter" : {
- 96 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" ,
+ 96 "class" : "pythonjsonlogger.json.JsonFormatter" ,
97 # Note that this format string uses `time` which is set by the renamer
98 # plugin. It also has `lvl` which is there strictly to test our fallback
99 # to using `levelno` in the mocks to determine level.
@@ -198,7 +198,7 @@
116 "style" : "{" ,
117 } ,
118 "logging_config.weird_formatter" : {
- 119 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" ,
+ 119 "class" : "pythonjsonlogger.json.JsonFormatter" ,
120 "format" : "{time} {lvl} {name} {message}" ,
121 "style" : "{" ,
122 } ,
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index 196f922..7da0749 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -116,7 +116,7 @@
34 # https://test.pypi.org/project/annotated-logger/
35 # The dev versions in testpypi can then be pulled in to whatever project needed
36 # the new feature.
- 37 VERSION = "1.2.1" # pragma: no mutate
+ 37 VERSION = "1.2.2" # pragma: no mutate
38
39 T = TypeVar ( "T" )
40 P = ParamSpec ( "P" )
@@ -191,7 +191,7 @@
109 } ,
110 "formatters" : {
111 "annotated_formatter" : {
- 112 "class" : "pythonjsonlogger.jsonlogger.JsonFormatter" , # pragma: no mutate
+ 112 "class" : "pythonjsonlogger.json.JsonFormatter" , # pragma: no mutate
113 "format" : "{created} {levelname} {name} {message}" , # pragma: no mutate
114 "style" : "{" ,
115 } ,
@@ -1055,7 +1055,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index c6c2582..a6f2023 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index d4fd706..00dd216 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -342,7 +342,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_plugins_py.html b/htmlcov/z_beb44c9891d1179a_plugins_py.html
index d2c636e..9ddd7e9 100644
--- a/htmlcov/z_beb44c9891d1179a_plugins_py.html
+++ b/htmlcov/z_beb44c9891d1179a_plugins_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
@@ -297,7 +297,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-16 17:38 +0000
+ created at 2024-12-17 21:15 +0000
From bfa64e597c456c5bb6553d2adcb565103a10f432 Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 19 Dec 2024 17:42:18 +0000
Subject: [PATCH 08/11] Update coverage data
---
data.json | 2 +-
htmlcov/class_index.html | 4 ++--
htmlcov/function_index.html | 4 ++--
htmlcov/index.html | 4 ++--
htmlcov/status.json | 2 +-
htmlcov/z_70983d692f648185_actions_py.html | 4 ++--
htmlcov/z_70983d692f648185_api_py.html | 4 ++--
htmlcov/z_70983d692f648185_calculator_py.html | 4 ++--
htmlcov/z_70983d692f648185_default_py.html | 4 ++--
htmlcov/z_70983d692f648185_invalid_order_py.html | 4 ++--
htmlcov/z_70983d692f648185_logging_config_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a___init___py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_filter_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_mocks_py.html | 4 ++--
htmlcov/z_beb44c9891d1179a_plugins_py.html | 4 ++--
15 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/data.json b/data.json
index 93eb7ea..202e6c6 100644
--- a/data.json
+++ b/data.json
@@ -1 +1 @@
-{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-17T21:15:59.065786", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
+{"coverage": 100.0, "raw_data": {"meta": {"format": 3, "version": "7.6.4", "timestamp": "2024-12-19T17:42:17.446134", "branch_coverage": false, "show_contexts": false}, "files": {"annotated_logger/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 140, 141, 142, 143, 144, 151, 153, 155, 156, 158, 160, 161, 162, 163, 164, 165, 166, 168, 169, 172, 173, 175, 182, 183, 184, 185, 189, 191, 200, 202, 214, 216, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 249, 251, 252, 254, 257, 258, 274, 306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 334, 346, 347, 351, 353, 355, 358, 360, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 797, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 867, 876, 877, 878, 879, 881, 882, 885, 886, 888, 890, 900, 901, 902, 903, 905, 906, 909, 910, 911, 913, 916, 917, 918, 919, 920, 921, 922, 923, 925, 927, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 314, "num_statements": 314, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30], "functions": {"AnnotatedIterator.__init__": {"executed_lines": [140, 141, 142, 143, 144, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__iter__": {"executed_lines": [155, 156], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator.__next__": {"executed_lines": [160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.__init__": {"executed_lines": [182, 183, 184, 185, 189], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.iterator": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.process": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.log": {"executed_lines": [224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter.annotate": {"executed_lines": [251, 252, 254], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.__init__": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._generate_logger": {"executed_lines": [346, 347, 351, 353], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._action_annotation": {"executed_lines": [358], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.generate_filter": {"executed_lines": [367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs": {"executed_lines": [700, 701, 705, 706, 710, 711, 715, 716, 720, 723, 795], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator": {"executed_lines": [726, 728, 739, 741, 745, 749, 793], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_class": {"executed_lines": [731, 734, 735, 736, 737], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger.annotate_logs.decorator.wrap_function": {"executed_lines": [750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments": {"executed_lines": [809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 865], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._determine_signature_adjustments.inject_logger": {"executed_lines": [829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_kwarg": {"executed_lines": [876, 877, 878, 879, 881, 882, 885, 886, 888], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._inject_by_index": {"executed_lines": [900, 901, 902, 903, 905, 906, 909, 910, 911], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._check_parameters_for_self_and_cls": {"executed_lines": [916, 917, 918, 919, 920, 921, 922, 923, 925], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger._pick_correct_logger": {"executed_lines": [934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "_attempt_post_call": {"executed_lines": [960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954], "summary": {"covered_lines": 110, "num_statements": 110, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}, "classes": {"AnnotatedClass": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedIterator": {"executed_lines": [140, 141, 142, 143, 144, 151, 155, 156, 160, 161, 162, 163, 164, 165, 166, 168, 169], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedAdapter": {"executed_lines": [182, 183, 184, 185, 189, 200, 214, 224, 225, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239, 245, 246, 247, 251, 252, 254], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogger": {"executed_lines": [306, 307, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 320, 321, 322, 323, 329, 330, 332, 346, 347, 351, 353, 358, 367, 368, 369, 370, 371, 372, 373, 375, 376, 377, 379, 700, 701, 705, 706, 710, 711, 715, 716, 720, 721, 723, 726, 728, 731, 734, 735, 736, 737, 739, 741, 745, 749, 750, 752, 754, 757, 758, 759, 760, 761, 763, 764, 765, 766, 767, 768, 769, 770, 771, 773, 774, 776, 780, 781, 782, 783, 784, 785, 788, 789, 790, 791, 793, 795, 809, 810, 811, 812, 815, 816, 817, 818, 820, 821, 822, 824, 829, 830, 833, 835, 839, 840, 841, 843, 844, 845, 846, 855, 863, 865, 876, 877, 878, 879, 881, 882, 885, 886, 888, 900, 901, 902, 903, 905, 906, 909, 910, 911, 916, 917, 918, 919, 920, 921, 922, 923, 925, 934, 935, 936, 937, 938, 940, 941, 942, 943, 946, 948], "summary": {"covered_lines": 153, "num_statements": 153, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 24, 26, 27, 29, 37, 39, 40, 41, 42, 43, 44, 45, 46, 49, 50, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 72, 73, 75, 85, 93, 96, 127, 128, 130, 153, 158, 172, 173, 175, 191, 202, 216, 249, 257, 258, 274, 334, 355, 360, 386, 387, 396, 397, 407, 408, 418, 419, 429, 430, 439, 440, 451, 452, 463, 464, 475, 476, 489, 490, 501, 502, 512, 513, 524, 525, 536, 537, 550, 551, 561, 562, 573, 574, 585, 586, 601, 602, 613, 614, 627, 628, 641, 642, 657, 797, 867, 890, 913, 927, 954, 960, 961, 962, 963, 964, 965, 966], "summary": {"covered_lines": 117, "num_statements": 117, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [29, 30]}}}, "annotated_logger/filter.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 22, 23, 24, 29, 31, 32, 33, 34, 35, 36, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AnnotatedFilter.__init__": {"executed_lines": [22, 23, 24, 29], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter._all_annotations": {"executed_lines": [32, 33, 34, 35, 36], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedFilter.filter": {"executed_lines": [46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AnnotatedFilter": {"executed_lines": [22, 23, 24, 29, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 57, 58], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 31, 38], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/mocks.py": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 23, 24, 25, 26, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 58, 61, 63, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 104, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156, 159, 160, 162, 163, 191, 193, 194, 195, 197, 199, 201, 203, 204, 205, 207, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 124, "num_statements": 124, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"AssertLogged.__init__": {"executed_lines": [23, 24, 25, 26, 27, 28, 29], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.check": {"executed_lines": [33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._failed_sort_key": {"executed_lines": [48, 49, 50, 51, 52, 53, 58, 61], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged.build_message": {"executed_lines": [65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AssertLogged._check_record_matches": {"executed_lines": [108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__init__": {"executed_lines": [193, 194, 195], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.__getattr__": {"executed_lines": [199], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.handle": {"executed_lines": [203, 204, 205], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock.assert_logged": {"executed_lines": [216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_object": {"executed_lines": [240], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "annotated_logger_mock": {"executed_lines": [246, 247, 248, 252, 253], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 243, 244], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AssertLogged": {"executed_lines": [23, 24, 25, 26, 27, 28, 29, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45, 48, 49, 50, 51, 52, 53, 58, 61, 65, 66, 67, 68, 72, 73, 74, 75, 76, 78, 79, 80, 82, 83, 84, 87, 90, 91, 92, 97, 98, 100, 101, 102, 108, 111, 117, 125, 126, 130, 131, 135, 136, 138, 139, 140, 141, 142, 143, 144, 145, 147, 149, 156], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnnotatedLogMock": {"executed_lines": [193, 194, 195, 199, 203, 204, 205, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 10, 11, 13, 31, 47, 63, 104, 159, 160, 162, 163, 191, 197, 201, 207, 237, 238, 240, 243, 244, 246, 247, 248, 252, 253], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "annotated_logger/plugins.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 20, 22, 26, 27, 28, 29, 30, 33, 34, 36, 40, 42, 44, 45, 46, 49, 50, 52, 56, 57, 58, 59, 62, 63, 65, 66, 68, 70, 71, 73, 75, 76, 77, 78, 79, 80, 81, 84, 85, 87, 89, 90, 91, 93, 95, 96, 97, 98, 101, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 120, 121, 123, 125, 127, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143, 146, 147, 149, 151, 152, 153, 155, 157, 158, 160, 165, 166, 167, 168, 169, 171, 173, 175], "summary": {"covered_lines": 92, "num_statements": 92, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [11, 12, 167, 168], "functions": {"BasePlugin.filter": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BasePlugin.uncaught_exception": {"executed_lines": [26, 27, 28, 29, 30], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.__init__": {"executed_lines": [40], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin.filter": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin.uncaught_exception": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.__init__": {"executed_lines": [70, 71], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.filter": {"executed_lines": [75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.__init__": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin.filter": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.__init__": {"executed_lines": [106, 107, 108], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin.filter": {"executed_lines": [112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.__init__": {"executed_lines": [125], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter": {"executed_lines": [130, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin.filter.delete_keys_nested": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.__init__": {"executed_lines": [151, 152, 153], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin.filter": {"executed_lines": [157, 158, 160, 165, 166, 167, 168, 169, 171], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "GitHubActionsPlugin.logging_config": {"executed_lines": [175], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}, "classes": {"BasePlugin": {"executed_lines": [20, 26, 27, 28, 29, 30], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RuntimeAnnotationsPlugin": {"executed_lines": [40, 44, 45, 46], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RequestsPlugin": {"executed_lines": [56, 57, 58, 59], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin": {"executed_lines": [70, 71, 75, 76, 77, 78, 79, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RenamerPlugin.FieldNotPresentError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RemoverPlugin": {"executed_lines": [89, 90, 91, 95, 96, 97, 98], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NameAdjusterPlugin": {"executed_lines": [106, 107, 108, 112, 113, 114, 115, 116, 117], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "NestedRemoverPlugin": {"executed_lines": [125, 130, 134, 135, 136, 137, 138, 139, 140, 142, 143], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitHubActionsPlugin": {"executed_lines": [151, 152, 153, 157, 158, 160, 165, 166, 167, 168, 169, 171, 175], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [167, 168]}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 11, 15, 16, 18, 22, 33, 34, 36, 42, 49, 50, 52, 62, 63, 65, 66, 68, 73, 84, 85, 87, 93, 101, 102, 104, 110, 120, 121, 123, 127, 146, 147, 149, 155, 173], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [11, 12]}}}, "example/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "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}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/actions.py": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 43, 45, 46, 48], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ActionsExample.first_step": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ActionsExample.second_step": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ActionsExample": {"executed_lines": [43, 48], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 9, 11, 13, 21, 22, 23, 24, 26, 34, 37, 38, 40, 41, 45, 46], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/api.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 37, 39, 40, 42, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 57, 59, 60, 61, 62, 64, 66, 68, 69, 70, 71], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.pre_call": {"executed_lines": [37], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check": {"executed_lines": [42, 43, 44, 45], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.check_again": {"executed_lines": [50, 51, 52, 53, 54], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.prepare": {"executed_lines": [59, 60, 61, 62], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ApiClient.throw_http_exception": {"executed_lines": [68, 69, 70, 71], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ApiClient": {"executed_lines": [37, 42, 43, 44, 45, 50, 51, 52, 53, 54, 59, 60, 61, 62, 68, 69, 70, 71], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 13, 15, 18, 28, 31, 32, 33, 35, 39, 40, 47, 48, 56, 57, 64, 66], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/calculator.py": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 57, 58, 59, 61, 63, 64, 65, 66, 68, 75, 77, 84, 85, 86, 87, 88, 89, 90, 94, 100, 102, 106, 107, 108, 111, 112, 114, 120, 124, 126, 128, 129, 133, 134, 136, 138, 139, 143, 144, 145, 146, 147, 149, 150, 153, 155, 159, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 177, 178, 179, 180, 182, 183, 185, 187, 188, 190, 192, 193, 195, 196, 199, 200, 201, 202, 204, 205, 209, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 225, 226, 227, 231, 232], "summary": {"covered_lines": 106, "num_statements": 106, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.__init__": {"executed_lines": [57, 58, 59], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_zero_division": {"executed_lines": [63, 64, 65, 66], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.will_pass": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.check_prediction_crashed_correctly": {"executed_lines": [84, 85, 86, 87, 88, 89, 90], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.divide": {"executed_lines": [102, 106, 107, 108, 111, 112], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply": {"executed_lines": [124, 126], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.multiply2": {"executed_lines": [133, 134, 136], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.power": {"executed_lines": [143, 144, 145, 146, 147], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.add": {"executed_lines": [153, 155, 159, 162, 163, 164, 165], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.subtract": {"executed_lines": [170, 171], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.inverse": {"executed_lines": [176, 177, 178, 179, 180], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.pemdas_example": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_odd": {"executed_lines": [190], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.factorial": {"executed_lines": [195, 196, 199, 200, 201, 202], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sensitive_factorial": {"executed_lines": [209, 212, 213, 214, 215], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.is_math_cool": {"executed_lines": [221, 222, 223], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator.sanity_check": {"executed_lines": [231, 232], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BoomError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Calculator": {"executed_lines": [57, 58, 59, 63, 64, 65, 66, 75, 84, 85, 86, 87, 88, 89, 90, 102, 106, 107, 108, 111, 112, 124, 126, 133, 134, 136, 143, 144, 145, 146, 147, 153, 155, 159, 162, 163, 164, 165, 170, 171, 176, 177, 178, 179, 180, 185, 190, 195, 196, 199, 200, 201, 202, 209, 212, 213, 214, 215, 221, 222, 223, 231, 232], "summary": {"covered_lines": 63, "num_statements": 63, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 14, 15, 18, 20, 23, 39, 41, 44, 45, 51, 61, 68, 77, 94, 100, 114, 120, 128, 129, 138, 139, 149, 150, 167, 168, 173, 174, 182, 183, 187, 188, 192, 193, 204, 205, 217, 218, 219, 225, 226, 227], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/default.py": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 17, 19, 20, 27, 28, 30, 31, 33, 34, 38, 40, 41, 43, 44, 48, 50, 51, 52, 53, 55, 56, 60, 61, 65, 66, 70, 72, 73, 74, 75, 77, 78, 87, 88, 89, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"DefaultExample.foo": {"executed_lines": [17], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args": {"executed_lines": [27, 28, 30, 31], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_kwargs": {"executed_lines": [38, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs": {"executed_lines": [48, 50, 51, 52, 53], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided_outer": {"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}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.var_args_and_kwargs_provided": {"executed_lines": [70, 72, 73, 74, 75], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DefaultExample.positional_only": {"executed_lines": [87, 88, 89], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided_outer": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "var_args_and_kwargs_provided": {"executed_lines": [106, 108, 109, 110, 111], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 101, 102], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DefaultExample": {"executed_lines": [17, 27, 28, 30, 31, 38, 40, 41, 48, 50, 51, 52, 53, 60, 61, 70, 72, 73, 74, 75, 87, 88, 89], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 6, 8, 11, 12, 14, 15, 19, 20, 33, 34, 43, 44, 55, 56, 65, 66, 77, 78, 92, 93, 97, 98, 101, 102, 106, 108, 109, 110, 111], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "example/invalid_order.py": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13], "functions": {"wrong_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}, "": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 5, 7, 10, 11], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [13]}}}, "example/logging_config.py": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"runtime": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_logs": {"executed_lines": [188, 189, 190, 191], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_annotated_logs": {"executed_lines": [197, 198, 199, 200], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "make_some_weird_logs": {"executed_lines": [209, 210, 211, 212], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_really_long_message": {"executed_lines": [223, 224, 225, 226, 227], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 5, 35, 151, 156, 171, 173, 180, 182, 183, 186, 194, 195, 203, 207, 215, 221], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 4, 5, 35, 151, 153, 156, 171, 173, 180, 182, 183, 186, 188, 189, 190, 191, 194, 195, 197, 198, 199, 200, 203, 207, 209, 210, 211, 212, 215, 221, 223, 224, 225, 226, 227], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 821, "num_statements": 821, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 7}}, "coverage_path": "."}
\ No newline at end of file
diff --git a/htmlcov/class_index.html b/htmlcov/class_index.html
index 23da790..31056c0 100644
--- a/htmlcov/class_index.html
+++ b/htmlcov/class_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -317,7 +317,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/function_index.html b/htmlcov/function_index.html
index 482ecab..b190ccd 100644
--- a/htmlcov/function_index.html
+++ b/htmlcov/function_index.html
@@ -55,7 +55,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -933,7 +933,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/index.html b/htmlcov/index.html
index b3b10fb..488717b 100644
--- a/htmlcov/index.html
+++ b/htmlcov/index.html
@@ -54,7 +54,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -160,7 +160,7 @@
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/status.json b/htmlcov/status.json
index b7d1369..3073cc2 100644
--- a/htmlcov/status.json
+++ b/htmlcov/status.json
@@ -1 +1 @@
-{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"d7a23feea9cb097bf07aed97ce54f896","files":{"z_beb44c9891d1179a___init___py":{"hash":"0042e9ccafa8e28cb0b2a634f002925c","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"fa9b307aa118d1ce0e1090be378700c6","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
+{"note":"This file is an internal implementation detail to speed up HTML report generation. Its format can change at any time. You might be looking for the JSON report: https://coverage.rtfd.io/cmd.html#cmd-json","format":5,"version":"7.6.4","globals":"0fc6ae96e146366820f586f04b800fb3","files":{"z_beb44c9891d1179a___init___py":{"hash":"0042e9ccafa8e28cb0b2a634f002925c","index":{"url":"z_beb44c9891d1179a___init___py.html","file":"annotated_logger/__init__.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":314,"n_excluded":2,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_filter_py":{"hash":"ae4581fe8fb9820d695a0a072e1bd7e7","index":{"url":"z_beb44c9891d1179a_filter_py.html","file":"annotated_logger/filter.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":31,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_mocks_py":{"hash":"63faafd014a204ecc4c45315c6ee4068","index":{"url":"z_beb44c9891d1179a_mocks_py.html","file":"annotated_logger/mocks.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":124,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_beb44c9891d1179a_plugins_py":{"hash":"68b4a191b73aa1750cd0efb07ca33a3b","index":{"url":"z_beb44c9891d1179a_plugins_py.html","file":"annotated_logger/plugins.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":92,"n_excluded":4,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_actions_py":{"hash":"ee78484470c2ab71a7d0c76ad7a4b32b","index":{"url":"z_70983d692f648185_actions_py.html","file":"example/actions.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":19,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_api_py":{"hash":"25c161f830b58193a5a297360225b232","index":{"url":"z_70983d692f648185_api_py.html","file":"example/api.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":40,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_calculator_py":{"hash":"057fbded3fbcb00f546b8cee98f25cdd","index":{"url":"z_70983d692f648185_calculator_py.html","file":"example/calculator.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":106,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_default_py":{"hash":"25a5154e668e5b49904630edae1e271d","index":{"url":"z_70983d692f648185_default_py.html","file":"example/default.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":53,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_invalid_order_py":{"hash":"d6782cd5f5a0d4a82739941542eab04a","index":{"url":"z_70983d692f648185_invalid_order_py.html","file":"example/invalid_order.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":5,"n_excluded":1,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}},"z_70983d692f648185_logging_config_py":{"hash":"fa9b307aa118d1ce0e1090be378700c6","index":{"url":"z_70983d692f648185_logging_config_py.html","file":"example/logging_config.py","description":"","nums":{"precision":0,"n_files":1,"n_statements":37,"n_excluded":0,"n_missing":0,"n_branches":0,"n_partial_branches":0,"n_missing_branches":0}}}}}
\ No newline at end of file
diff --git a/htmlcov/z_70983d692f648185_actions_py.html b/htmlcov/z_70983d692f648185_actions_py.html
index c448f5d..d6cdffe 100644
--- a/htmlcov/z_70983d692f648185_actions_py.html
+++ b/htmlcov/z_70983d692f648185_actions_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -137,7 +137,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_70983d692f648185_api_py.html b/htmlcov/z_70983d692f648185_api_py.html
index a92d497..6857754 100644
--- a/htmlcov/z_70983d692f648185_api_py.html
+++ b/htmlcov/z_70983d692f648185_api_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -160,7 +160,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_70983d692f648185_calculator_py.html b/htmlcov/z_70983d692f648185_calculator_py.html
index c76f55f..db5f562 100644
--- a/htmlcov/z_70983d692f648185_calculator_py.html
+++ b/htmlcov/z_70983d692f648185_calculator_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -321,7 +321,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_70983d692f648185_default_py.html b/htmlcov/z_70983d692f648185_default_py.html
index 5a6039f..cb2bb08 100644
--- a/htmlcov/z_70983d692f648185_default_py.html
+++ b/htmlcov/z_70983d692f648185_default_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -200,7 +200,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_70983d692f648185_invalid_order_py.html b/htmlcov/z_70983d692f648185_invalid_order_py.html
index cfc4af8..00e6812 100644
--- a/htmlcov/z_70983d692f648185_invalid_order_py.html
+++ b/htmlcov/z_70983d692f648185_invalid_order_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -102,7 +102,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_70983d692f648185_logging_config_py.html b/htmlcov/z_70983d692f648185_logging_config_py.html
index 3b49978..6a91616 100644
--- a/htmlcov/z_70983d692f648185_logging_config_py.html
+++ b/htmlcov/z_70983d692f648185_logging_config_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -316,7 +316,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a___init___py.html b/htmlcov/z_beb44c9891d1179a___init___py.html
index 7da0749..fa8ace2 100644
--- a/htmlcov/z_beb44c9891d1179a___init___py.html
+++ b/htmlcov/z_beb44c9891d1179a___init___py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -1055,7 +1055,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_filter_py.html b/htmlcov/z_beb44c9891d1179a_filter_py.html
index a6f2023..65d2f83 100644
--- a/htmlcov/z_beb44c9891d1179a_filter_py.html
+++ b/htmlcov/z_beb44c9891d1179a_filter_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
@@ -147,7 +147,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000
diff --git a/htmlcov/z_beb44c9891d1179a_mocks_py.html b/htmlcov/z_beb44c9891d1179a_mocks_py.html
index 00dd216..d4cf3e3 100644
--- a/htmlcov/z_beb44c9891d1179a_mocks_py.html
+++ b/htmlcov/z_beb44c9891d1179a_mocks_py.html
@@ -65,7 +65,7 @@
» next
coverage.py v7.6.4 ,
- created at 2024-12-17 21:15 +0000
+ created at 2024-12-19 17:42 +0000