| Offset 1, 3 lines modified | Offset 1, 3 lines modified | ||
| 1 | ·1a6ff18d548fe993dd50f47d1949e1d9·61408·doc·optional·python-mt-940-doc_4.30.0-3_all.deb | 1 | ·1a6ff18d548fe993dd50f47d1949e1d9·61408·doc·optional·python-mt-940-doc_4.30.0-3_all.deb | 
| 2 | · | 2 | ·14dae9b23c0b2d9e896df60a20a9ef03·63196·python·optional·python3-mt-940_4.30.0-3_all.deb | 
| Offset 1, 3 lines modified | Offset 1, 3 lines modified | ||
| 1 | -rw-r--r--···0········0········0········4·2024-12-21·13:51:00.000000·debian-binary | 1 | -rw-r--r--···0········0········0········4·2024-12-21·13:51:00.000000·debian-binary | 
| 2 | -rw-r--r--···0········0········0·····216 | 2 | -rw-r--r--···0········0········0·····2168·2024-12-21·13:51:00.000000·control.tar.xz | 
| 3 | -rw-r--r--···0········0········0····608 | 3 | -rw-r--r--···0········0········0····60836·2024-12-21·13:51:00.000000·data.tar.xz | 
| Offset 51, 15 lines modified | Offset 51, 15 lines modified | ||
| 51 | ········<h2> | 51 | ········<h2> | 
| 52 | ················<a·class="button"·href="index.html">Files</a> | 52 | ················<a·class="button"·href="index.html">Files</a> | 
| 53 | ················<a·class="button"·href="function_index.html">Functions</a> | 53 | ················<a·class="button"·href="function_index.html">Functions</a> | 
| 54 | ················<a·class="button·current">Classes</a> | 54 | ················<a·class="button·current">Classes</a> | 
| 55 | ········</h2> | 55 | ········</h2> | 
| 56 | ········<p·class="text"> | 56 | ········<p·class="text"> | 
| 57 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 57 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 58 | ············created·at·202 | 58 | ············created·at·2026-11-29·02:43·+1400 | 
| 59 | ········</p> | 59 | ········</p> | 
| 60 | ····</div> | 60 | ····</div> | 
| 61 | </header> | 61 | </header> | 
| 62 | <main·id="index"> | 62 | <main·id="index"> | 
| 63 | ····<table·class="index"·data-sortable> | 63 | ····<table·class="index"·data-sortable> | 
| 64 | ········<thead> | 64 | ········<thead> | 
| 65 | ············<tr·class="tablehead"·title="Click·to·sort"> | 65 | ············<tr·class="tablehead"·title="Click·to·sort"> | 
| Offset 448, 15 lines modified | Offset 448, 15 lines modified | ||
| 448 | ········No·items·found·using·the·specified·filter. | 448 | ········No·items·found·using·the·specified·filter. | 
| 449 | ····</p> | 449 | ····</p> | 
| 450 | </main> | 450 | </main> | 
| 451 | <footer> | 451 | <footer> | 
| 452 | ····<div·class="content"> | 452 | ····<div·class="content"> | 
| 453 | ········<p> | 453 | ········<p> | 
| 454 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 454 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 455 | ············created·at·202 | 455 | ············created·at·2026-11-29·02:43·+1400 | 
| 456 | ········</p> | 456 | ········</p> | 
| 457 | ····</div> | 457 | ····</div> | 
| 458 | ····<aside·class="hidden"> | 458 | ····<aside·class="hidden"> | 
| 459 | ········<a·id="prevFileLink"·class="nav"·href=""></a> | 459 | ········<a·id="prevFileLink"·class="nav"·href=""></a> | 
| 460 | ········<a·id="nextFileLink"·class="nav"·href=""></a> | 460 | ········<a·id="nextFileLink"·class="nav"·href=""></a> | 
| 461 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 461 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| 462 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 462 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 
| Offset 3, 15 lines modified | Offset 3, 15 lines modified | ||
| 3 | Shortcuts·on·this·page | 3 | Shortcuts·on·this·page | 
| 4 | f·n·s·m·x·c· ·change·column·sorting | 4 | f·n·s·m·x·c· ·change·column·sorting | 
| 5 | [·]· ·prev/next·file | 5 | [·]· ·prev/next·file | 
| 6 | ?· ·show/hide·this·help | 6 | ?· ·show/hide·this·help | 
| 7 | [····················] | 7 | [····················] | 
| 8 | [·]hide·covered | 8 | [·]hide·covered | 
| 9 | *****·Files·Functions·Classes·***** | 9 | *****·Files·Functions·Classes·***** | 
| 10 | coverage.py_v7.8.2,·created·at·202 | 10 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| 11 | File············class······················statements·missing·excluded·coverage | 11 | File············class······················statements·missing·excluded·coverage | 
| 12 | mt940/__about_··(no_class)·················9··········9·······0········0% | 12 | mt940/__about_··(no_class)·················9··········9·······0········0% | 
| 13 | _.py | 13 | _.py | 
| 14 | mt940/__init_···(no_class)·················9··········9·······0········0% | 14 | mt940/__init_···(no_class)·················9··········9·······0········0% | 
| 15 | _.py | 15 | _.py | 
| 16 | mt940/_·········(no_class)·················4··········4·······70·······0% | 16 | mt940/_·········(no_class)·················4··········4·······70·······0% | 
| 17 | compat.py | 17 | compat.py | 
| Offset 56, 8 lines modified | Offset 56, 8 lines modified | ||
| 56 | mt940/tags.py···SumCreditEntries···········0··········0·······0········100% | 56 | mt940/tags.py···SumCreditEntries···········0··········0·······0········100% | 
| 57 | mt940/tags.py···Tags·······················0··········0·······0········100% | 57 | mt940/tags.py···Tags·······················0··········0·······0········100% | 
| 58 | mt940/tags.py···(no_class)·················108········108·····9········0% | 58 | mt940/tags.py···(no_class)·················108········108·····9········0% | 
| 59 | mt940/utils.py··Strip······················0··········0·······0········100% | 59 | mt940/utils.py··Strip······················0··········0·······0········100% | 
| 60 | mt940/utils.py··(no_class)·················19·········19······0········0% | 60 | mt940/utils.py··(no_class)·················19·········19······0········0% | 
| 61 | Total··········· ··························531········531·····117······0% | 61 | Total··········· ··························531········531·····117······0% | 
| 62 | No·items·found·using·the·specified·filter. | 62 | No·items·found·using·the·specified·filter. | 
| 63 | coverage.py_v7.8.2,·created·at·202 | 63 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| Offset 51, 15 lines modified | Offset 51, 15 lines modified | ||
| 51 | ········<h2> | 51 | ········<h2> | 
| 52 | ················<a·class="button"·href="index.html">Files</a> | 52 | ················<a·class="button"·href="index.html">Files</a> | 
| 53 | ················<a·class="button·current">Functions</a> | 53 | ················<a·class="button·current">Functions</a> | 
| 54 | ················<a·class="button"·href="class_index.html">Classes</a> | 54 | ················<a·class="button"·href="class_index.html">Classes</a> | 
| 55 | ········</h2> | 55 | ········</h2> | 
| 56 | ········<p·class="text"> | 56 | ········<p·class="text"> | 
| 57 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 57 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 58 | ············created·at·202 | 58 | ············created·at·2026-11-29·02:43·+1400 | 
| 59 | ········</p> | 59 | ········</p> | 
| 60 | ····</div> | 60 | ····</div> | 
| 61 | </header> | 61 | </header> | 
| 62 | <main·id="index"> | 62 | <main·id="index"> | 
| 63 | ····<table·class="index"·data-sortable> | 63 | ····<table·class="index"·data-sortable> | 
| 64 | ········<thead> | 64 | ········<thead> | 
| 65 | ············<tr·class="tablehead"·title="Click·to·sort"> | 65 | ············<tr·class="tablehead"·title="Click·to·sort"> | 
| Offset 688, 15 lines modified | Offset 688, 15 lines modified | ||
| 688 | ········No·items·found·using·the·specified·filter. | 688 | ········No·items·found·using·the·specified·filter. | 
| 689 | ····</p> | 689 | ····</p> | 
| 690 | </main> | 690 | </main> | 
| 691 | <footer> | 691 | <footer> | 
| 692 | ····<div·class="content"> | 692 | ····<div·class="content"> | 
| 693 | ········<p> | 693 | ········<p> | 
| 694 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 694 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 695 | ············created·at·202 | 695 | ············created·at·2026-11-29·02:43·+1400 | 
| 696 | ········</p> | 696 | ········</p> | 
| 697 | ····</div> | 697 | ····</div> | 
| 698 | ····<aside·class="hidden"> | 698 | ····<aside·class="hidden"> | 
| 699 | ········<a·id="prevFileLink"·class="nav"·href=""></a> | 699 | ········<a·id="prevFileLink"·class="nav"·href=""></a> | 
| 700 | ········<a·id="nextFileLink"·class="nav"·href=""></a> | 700 | ········<a·id="nextFileLink"·class="nav"·href=""></a> | 
| 701 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 701 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| 702 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 702 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 
| Offset 3, 15 lines modified | Offset 3, 15 lines modified | ||
| 3 | Shortcuts·on·this·page | 3 | Shortcuts·on·this·page | 
| 4 | f·n·s·m·x·c· ·change·column·sorting | 4 | f·n·s·m·x·c· ·change·column·sorting | 
| 5 | [·]· ·prev/next·file | 5 | [·]· ·prev/next·file | 
| 6 | ?· ·show/hide·this·help | 6 | ?· ·show/hide·this·help | 
| 7 | [····················] | 7 | [····················] | 
| 8 | [·]hide·covered | 8 | [·]hide·covered | 
| 9 | *****·Files·Functions·Classes·***** | 9 | *****·Files·Functions·Classes·***** | 
| 10 | coverage.py_v7.8.2,·created·at·202 | 10 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| 11 | File············function···················statements·missing·excluded·coverage | 11 | File············function···················statements·missing·excluded·coverage | 
| 12 | mt940/__about_··(no_function)··············9··········9·······0········0% | 12 | mt940/__about_··(no_function)··············9··········9·······0········0% | 
| 13 | _.py | 13 | _.py | 
| 14 | mt940/__init_···(no_function)··············9··········9·······0········0% | 14 | mt940/__init_···(no_function)··············9··········9·······0········0% | 
| 15 | _.py | 15 | _.py | 
| 16 | mt940/_·········_identity··················0··········0·······1········100% | 16 | mt940/_·········_identity··················0··········0·······1········100% | 
| 17 | compat.py | 17 | compat.py | 
| Offset 110, 8 lines modified | Offset 110, 8 lines modified | ||
| 110 | mt940/tags.py···SumEntries.__call__········3··········3·······0········0% | 110 | mt940/tags.py···SumEntries.__call__········3··········3·······0········0% | 
| 111 | mt940/tags.py···(no_function)··············108········108·····9········0% | 111 | mt940/tags.py···(no_function)··············108········108·····9········0% | 
| 112 | mt940/utils.py··coalesce···················3··········3·······0········0% | 112 | mt940/utils.py··coalesce···················3··········3·······0········0% | 
| 113 | mt940/utils.py··join_lines·················8··········8·······0········0% | 113 | mt940/utils.py··join_lines·················8··········8·······0········0% | 
| 114 | mt940/utils.py··(no_function)··············8··········8·······0········0% | 114 | mt940/utils.py··(no_function)··············8··········8·······0········0% | 
| 115 | Total··········· ··························531········531·····117······0% | 115 | Total··········· ··························531········531·····117······0% | 
| 116 | No·items·found·using·the·specified·filter. | 116 | No·items·found·using·the·specified·filter. | 
| 117 | coverage.py_v7.8.2,·created·at·202 | 117 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| Offset 50, 15 lines modified | Offset 50, 15 lines modified | ||
| 50 | ········<h2> | 50 | ········<h2> | 
| 51 | ················<a·class="button·current">Files</a> | 51 | ················<a·class="button·current">Files</a> | 
| 52 | ················<a·class="button"·href="function_index.html">Functions</a> | 52 | ················<a·class="button"·href="function_index.html">Functions</a> | 
| 53 | ················<a·class="button"·href="class_index.html">Classes</a> | 53 | ················<a·class="button"·href="class_index.html">Classes</a> | 
| 54 | ········</h2> | 54 | ········</h2> | 
| 55 | ········<p·class="text"> | 55 | ········<p·class="text"> | 
| 56 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 56 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 57 | ············created·at·202 | 57 | ············created·at·2026-11-29·02:43·+1400 | 
| 58 | ········</p> | 58 | ········</p> | 
| 59 | ····</div> | 59 | ····</div> | 
| 60 | </header> | 60 | </header> | 
| 61 | <main·id="index"> | 61 | <main·id="index"> | 
| 62 | ····<table·class="index"·data-sortable> | 62 | ····<table·class="index"·data-sortable> | 
| 63 | ········<thead> | 63 | ········<thead> | 
| 64 | ············<tr·class="tablehead"·title="Click·to·sort"> | 64 | ············<tr·class="tablehead"·title="Click·to·sort"> | 
| Offset 148, 15 lines modified | Offset 148, 15 lines modified | ||
| 148 | ········No·items·found·using·the·specified·filter. | 148 | ········No·items·found·using·the·specified·filter. | 
| 149 | ····</p> | 149 | ····</p> | 
| 150 | </main> | 150 | </main> | 
| 151 | <footer> | 151 | <footer> | 
| 152 | ····<div·class="content"> | 152 | ····<div·class="content"> | 
| 153 | ········<p> | 153 | ········<p> | 
| 154 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 154 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 155 | ············created·at·202 | 155 | ············created·at·2026-11-29·02:43·+1400 | 
| 156 | ········</p> | 156 | ········</p> | 
| 157 | ····</div> | 157 | ····</div> | 
| 158 | ····<aside·class="hidden"> | 158 | ····<aside·class="hidden"> | 
| 159 | ········<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_utils_py.html"></a> | 159 | ········<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_utils_py.html"></a> | 
| 160 | ········<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d___about___py.html"></a> | 160 | ········<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d___about___py.html"></a> | 
| 161 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 161 | ········<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| 162 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 162 | ········<button·type="button"·class="button_next_file"·data-shortcut="]"></button> | 
| Offset 3, 21 lines modified | Offset 3, 21 lines modified | ||
| 3 | Shortcuts·on·this·page | 3 | Shortcuts·on·this·page | 
| 4 | f·s·m·x·c· ·change·column·sorting | 4 | f·s·m·x·c· ·change·column·sorting | 
| 5 | [·]· ·prev/next·file | 5 | [·]· ·prev/next·file | 
| 6 | ?· ·show/hide·this·help | 6 | ?· ·show/hide·this·help | 
| 7 | [····················] | 7 | [····················] | 
| 8 | [·]hide·covered | 8 | [·]hide·covered | 
| 9 | *****·Files·Functions·Classes·***** | 9 | *****·Files·Functions·Classes·***** | 
| 10 | coverage.py_v7.8.2,·created·at·202 | 10 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| 11 | File················statements·missing·excluded·coverage | 11 | File················statements·missing·excluded·coverage | 
| 12 | mt940/__about__.py··9··········9·······0········0% | 12 | mt940/__about__.py··9··········9·······0········0% | 
| 13 | mt940/__init__.py···9··········9·······0········0% | 13 | mt940/__init__.py···9··········9·······0········0% | 
| 14 | mt940/_compat.py····4··········4·······70·······0% | 14 | mt940/_compat.py····4··········4·······70·······0% | 
| 15 | mt940/json.py·······19·········19······2········0% | 15 | mt940/json.py·······19·········19······2········0% | 
| 16 | mt940/models.py·····177········177·····9········0% | 16 | mt940/models.py·····177········177·····9········0% | 
| 17 | mt940/parser.py·····17·········17······15·······0% | 17 | mt940/parser.py·····17·········17······15·······0% | 
| 18 | mt940/processors.py·111········111·····1········0% | 18 | mt940/processors.py·111········111·····1········0% | 
| 19 | mt940/tags.py·······166········166·····20·······0% | 19 | mt940/tags.py·······166········166·····20·······0% | 
| 20 | mt940/utils.py······19·········19······0········0% | 20 | mt940/utils.py······19·········19······0········0% | 
| 21 | Total···············531········531·····117······0% | 21 | Total···············531········531·····117······0% | 
| 22 | No·items·found·using·the·specified·filter. | 22 | No·items·found·using·the·specified·filter. | 
| 23 | coverage.py_v7.8.2,·created·at·202 | 23 | coverage.py_v7.8.2,·created·at·2026-11-29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="index.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="index.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d___init___py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d___init___py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 97, 13 lines modified | Offset 97, 13 lines modified | ||
| 97 | ····<div·class="content"> | 97 | ····<div·class="content"> | 
| 98 | ········<p> | 98 | ········<p> | 
| 99 | ············<a·class="nav"·href="index.html">«·prev</a>· ·  | 99 | ············<a·class="nav"·href="index.html">«·prev</a>· ·  | 
| 100 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 100 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 101 | ············<a·class="nav"·href="z_d331b95102e7fe3d___init___py.html">»·next</a> | 101 | ············<a·class="nav"·href="z_d331b95102e7fe3d___init___py.html">»·next</a> | 
| 102 | ············ · ·  | 102 | ············ · ·  | 
| 103 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 103 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 104 | ············created·at·202 | 104 | ············created·at·2026-11-29·02:43·+1400 | 
| 105 | ········</p> | 105 | ········</p> | 
| 106 | ····</div> | 106 | ····</div> | 
| 107 | </footer> | 107 | </footer> | 
| 108 | </body> | 108 | </body> | 
| 109 | </html> | 109 | </html> | 
| Offset 5, 23 lines modified | Offset 5, 23 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·9·statements· ·0·run·9·missing·0·excluded·***** | 11 | *****·9·statements· ·0·run·9·missing·0·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1__title__·=·'MT940' | 14 | 1__title__·=·'MT940' | 
| 15 | 2__package_name__·=·'mt-940' | 15 | 2__package_name__·=·'mt-940' | 
| 16 | 3__author__·=·'Rick·van·Hattem·(wolph)' | 16 | 3__author__·=·'Rick·van·Hattem·(wolph)' | 
| 17 | 4__description__·=·'·'.join(''' | 17 | 4__description__·=·'·'.join(''' | 
| 18 | 5A·library·to·parse·MT940·files·and·returns·smart·Python·collections·for | 18 | 5A·library·to·parse·MT940·files·and·returns·smart·Python·collections·for | 
| 19 | 6statistics·and·manipulation. | 19 | 6statistics·and·manipulation. | 
| 20 | 7'''.strip().split()) | 20 | 7'''.strip().split()) | 
| 21 | 8__email__·=·'wolph@wol.ph' | 21 | 8__email__·=·'wolph@wol.ph' | 
| 22 | 9__version__·=·'4.30.0' | 22 | 9__version__·=·'4.30.0' | 
| 23 | 10__license__·=·'BSD' | 23 | 10__license__·=·'BSD' | 
| 24 | 11__copyright__·=·'Copyright·2015·Rick·van·Hattem·(wolph)' | 24 | 11__copyright__·=·'Copyright·2015·Rick·van·Hattem·(wolph)' | 
| 25 | 12__url__·=·'https://github.com/WoLpH/mt940' | 25 | 12__url__·=·'https://github.com/WoLpH/mt940' | 
| 26 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 26 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 27 | 2 | 27 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d___about___py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d___about___py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 106, 13 lines modified | Offset 106, 13 lines modified | ||
| 106 | ····<div·class="content"> | 106 | ····<div·class="content"> | 
| 107 | ········<p> | 107 | ········<p> | 
| 108 | ············<a·class="nav"·href="z_d331b95102e7fe3d___about___py.html">«·prev</a>· ·  | 108 | ············<a·class="nav"·href="z_d331b95102e7fe3d___about___py.html">«·prev</a>· ·  | 
| 109 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 109 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 110 | ············<a·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">»·next</a> | 110 | ············<a·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">»·next</a> | 
| 111 | ············ · ·  | 111 | ············ · ·  | 
| 112 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 112 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 113 | ············created·at·202 | 113 | ············created·at·2026-11-29·02:43·+1400 | 
| 114 | ········</p> | 114 | ········</p> | 
| 115 | ····</div> | 115 | ····</div> | 
| 116 | </footer> | 116 | </footer> | 
| 117 | </body> | 117 | </body> | 
| 118 | </html> | 118 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·9·statements· ·0·run·9·missing·0·excluded·***** | 11 | *****·9·statements· ·0·run·9·missing·0·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1from·__future__·import·absolute_import | 14 | 1from·__future__·import·absolute_import | 
| 15 | 2 | 15 | 2 | 
| 16 | 3from·.json·import·JSONEncoder | 16 | 3from·.json·import·JSONEncoder | 
| 17 | 4from·.·import·tags | 17 | 4from·.·import·tags | 
| 18 | 5from·.·import·utils | 18 | 5from·.·import·utils | 
| 19 | 6from·.·import·models | 19 | 6from·.·import·models | 
| 20 | 7from·.·import·parser | 20 | 7from·.·import·parser | 
| Offset 28, 9 lines modified | Offset 28, 9 lines modified | ||
| 28 | 15·'parser', | 28 | 15·'parser', | 
| 29 | 16·'models', | 29 | 16·'models', | 
| 30 | 17·'utils', | 30 | 17·'utils', | 
| 31 | 18·'parse', | 31 | 18·'parse', | 
| 32 | 19·'tags', | 32 | 19·'tags', | 
| 33 | 20·'json', | 33 | 20·'json', | 
| 34 | 21] | 34 | 21] | 
| 35 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 35 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 36 | 2 | 36 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d___init___py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d___init___py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_json_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_json_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 217, 13 lines modified | Offset 217, 13 lines modified | ||
| 217 | ····<div·class="content"> | 217 | ····<div·class="content"> | 
| 218 | ········<p> | 218 | ········<p> | 
| 219 | ············<a·class="nav"·href="z_d331b95102e7fe3d___init___py.html">«·prev</a>· ·  | 219 | ············<a·class="nav"·href="z_d331b95102e7fe3d___init___py.html">«·prev</a>· ·  | 
| 220 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 220 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 221 | ············<a·class="nav"·href="z_d331b95102e7fe3d_json_py.html">»·next</a> | 221 | ············<a·class="nav"·href="z_d331b95102e7fe3d_json_py.html">»·next</a> | 
| 222 | ············ · ·  | 222 | ············ · ·  | 
| 223 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 223 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 224 | ············created·at·202 | 224 | ············created·at·2026-11-29·02:43·+1400 | 
| 225 | ········</p> | 225 | ········</p> | 
| 226 | ····</div> | 226 | ····</div> | 
| 227 | </footer> | 227 | </footer> | 
| 228 | </body> | 228 | </body> | 
| 229 | </html> | 229 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·4·statements· ·0·run·4·missing·70·excluded·***** | 11 | *****·4·statements· ·0·run·4·missing·70·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1import·sys | 14 | 1import·sys | 
| 15 | 2 | 15 | 2 | 
| 16 | 3PY2·=·sys.version_info[0]·==·2 | 16 | 3PY2·=·sys.version_info[0]·==·2 | 
| 17 | 4 | 17 | 4 | 
| 18 | 5 | 18 | 5 | 
| 19 | 6def·_identity(x):·#·pragma:·no·cover | 19 | 6def·_identity(x):·#·pragma:·no·cover | 
| 20 | 7·return·x | 20 | 7·return·x | 
| Offset 139, 9 lines modified | Offset 139, 9 lines modified | ||
| 139 | 126·def·reraise(tp,·value,·tb=None): | 139 | 126·def·reraise(tp,·value,·tb=None): | 
| 140 | 127·if·value.__traceback__·is·not·tb: | 140 | 127·if·value.__traceback__·is·not·tb: | 
| 141 | 128·raise·(value.with_traceback(tb)) | 141 | 128·raise·(value.with_traceback(tb)) | 
| 142 | 129·raise·value | 142 | 129·raise·value | 
| 143 | 130 | 143 | 130 | 
| 144 | 131 | 144 | 131 | 
| 145 | 132number_types·=·integer_types·+·(float,·) | 145 | 132number_types·=·integer_types·+·(float,·) | 
| 146 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 146 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 147 | 2 | 147 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_models_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_models_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 134, 13 lines modified | Offset 134, 13 lines modified | ||
| 134 | ····<div·class="content"> | 134 | ····<div·class="content"> | 
| 135 | ········<p> | 135 | ········<p> | 
| 136 | ············<a·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">«·prev</a>· ·  | 136 | ············<a·class="nav"·href="z_d331b95102e7fe3d__compat_py.html">«·prev</a>· ·  | 
| 137 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 137 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 138 | ············<a·class="nav"·href="z_d331b95102e7fe3d_models_py.html">»·next</a> | 138 | ············<a·class="nav"·href="z_d331b95102e7fe3d_models_py.html">»·next</a> | 
| 139 | ············ · ·  | 139 | ············ · ·  | 
| 140 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 140 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 141 | ············created·at·202 | 141 | ············created·at·2026-11-29·02:43·+1400 | 
| 142 | ········</p> | 142 | ········</p> | 
| 143 | ····</div> | 143 | ····</div> | 
| 144 | </footer> | 144 | </footer> | 
| 145 | </body> | 145 | </body> | 
| 146 | </html> | 146 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·19·statements· ·0·run·19·missing·2·excluded·***** | 11 | *****·19·statements· ·0·run·19·missing·2·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1from·__future__·import·absolute_import | 14 | 1from·__future__·import·absolute_import | 
| 15 | 2import·json | 15 | 2import·json | 
| 16 | 3import·decimal | 16 | 3import·decimal | 
| 17 | 4import·datetime | 17 | 4import·datetime | 
| 18 | 5 | 18 | 5 | 
| 19 | 6 | 19 | 6 | 
| 20 | 7from·.·import·models | 20 | 7from·.·import·models | 
| Offset 56, 9 lines modified | Offset 56, 9 lines modified | ||
| 56 | 43·#·Handle·types·that·have·a·`__dict__`·containing·the·data·(doesn't·work | 56 | 43·#·Handle·types·that·have·a·`__dict__`·containing·the·data·(doesn't·work | 
| 57 | 44·#·for·classes·using·`__slots__`·such·as·`datetime`) | 57 | 44·#·for·classes·using·`__slots__`·such·as·`datetime`) | 
| 58 | 45·elif·isinstance(value,·dict_types): | 58 | 45·elif·isinstance(value,·dict_types): | 
| 59 | 46·return·value.__dict__ | 59 | 46·return·value.__dict__ | 
| 60 | 47 | 60 | 47 | 
| 61 | 48·else:·#·pragma:·no·cover | 61 | 48·else:·#·pragma:·no·cover | 
| 62 | 49·return·json.JSONEncoder.default(self,·value) | 62 | 49·return·json.JSONEncoder.default(self,·value) | 
| 63 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 63 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 64 | 2 | 64 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_json_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_json_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 592, 13 lines modified | Offset 592, 13 lines modified | ||
| 592 | ····<div·class="content"> | 592 | ····<div·class="content"> | 
| 593 | ········<p> | 593 | ········<p> | 
| 594 | ············<a·class="nav"·href="z_d331b95102e7fe3d_json_py.html">«·prev</a>· ·  | 594 | ············<a·class="nav"·href="z_d331b95102e7fe3d_json_py.html">«·prev</a>· ·  | 
| 595 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 595 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 596 | ············<a·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">»·next</a> | 596 | ············<a·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">»·next</a> | 
| 597 | ············ · ·  | 597 | ············ · ·  | 
| 598 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 598 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 599 | ············created·at·202 | 599 | ············created·at·2026-11-29·02:43·+1400 | 
| 600 | ········</p> | 600 | ········</p> | 
| 601 | ····</div> | 601 | ····</div> | 
| 602 | </footer> | 602 | </footer> | 
| 603 | </body> | 603 | </body> | 
| 604 | </html> | 604 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·177·statements· ·0·run·177·missing·9·excluded·***** | 11 | *****·177·statements· ·0·run·177·missing·9·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1import·re | 14 | 1import·re | 
| 15 | 2import·decimal | 15 | 2import·decimal | 
| 16 | 3import·datetime | 16 | 3import·datetime | 
| 17 | 4 | 17 | 4 | 
| 18 | 5#·python·3.8+·compatibility | 18 | 5#·python·3.8+·compatibility | 
| 19 | 6try:·#·pragma:·no·cover | 19 | 6try:·#·pragma:·no·cover | 
| 20 | 7·from·collections·import·abc | 20 | 7·from·collections·import·abc | 
| Offset 514, 9 lines modified | Offset 514, 9 lines modified | ||
| 514 | 501·self.data.update(data) | 514 | 501·self.data.update(data) | 
| 515 | 502 | 515 | 502 | 
| 516 | 503·def·__repr__(self): | 516 | 503·def·__repr__(self): | 
| 517 | 504·return·'<%s[%s]·%s>'·%·( | 517 | 504·return·'<%s[%s]·%s>'·%·( | 
| 518 | 505·self.__class__.__name__, | 518 | 505·self.__class__.__name__, | 
| 519 | 506·self.data.get('date'), | 519 | 506·self.data.get('date'), | 
| 520 | 507·self.data.get('amount'),·) | 520 | 507·self.data.get('amount'),·) | 
| 521 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 521 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 522 | 2 | 522 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_models_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_models_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 163, 13 lines modified | Offset 163, 13 lines modified | ||
| 163 | ····<div·class="content"> | 163 | ····<div·class="content"> | 
| 164 | ········<p> | 164 | ········<p> | 
| 165 | ············<a·class="nav"·href="z_d331b95102e7fe3d_models_py.html">«·prev</a>· ·  | 165 | ············<a·class="nav"·href="z_d331b95102e7fe3d_models_py.html">«·prev</a>· ·  | 
| 166 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 166 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 167 | ············<a·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">»·next</a> | 167 | ············<a·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">»·next</a> | 
| 168 | ············ · ·  | 168 | ············ · ·  | 
| 169 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 169 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 170 | ············created·at·202 | 170 | ············created·at·2026-11-29·02:43·+1400 | 
| 171 | ········</p> | 171 | ········</p> | 
| 172 | ····</div> | 172 | ····</div> | 
| 173 | </footer> | 173 | </footer> | 
| 174 | </body> | 174 | </body> | 
| 175 | </html> | 175 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·17·statements· ·0·run·17·missing·15·excluded·***** | 11 | *****·17·statements· ·0·run·17·missing·15·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1#·vim:·fileencoding=utf-8: | 14 | 1#·vim:·fileencoding=utf-8: | 
| 15 | 2''' | 15 | 2''' | 
| 16 | 3 | 16 | 3 | 
| 17 | 4Format | 17 | 4Format | 
| 18 | 5--------------------- | 18 | 5--------------------- | 
| 19 | 6 | 19 | 6 | 
| 20 | 7Sources: | 20 | 7Sources: | 
| Offset 85, 9 lines modified | Offset 85, 9 lines modified | ||
| 85 | 72·else: | 85 | 72·else: | 
| 86 | 73·raise·exception·#·pragma:·no·cover | 86 | 73·raise·exception·#·pragma:·no·cover | 
| 87 | 74 | 87 | 74 | 
| 88 | 75·transactions·=·mt940.models.Transactions(processors,·tags) | 88 | 75·transactions·=·mt940.models.Transactions(processors,·tags) | 
| 89 | 76·transactions.parse(data) | 89 | 76·transactions.parse(data) | 
| 90 | 77 | 90 | 77 | 
| 91 | 78·return·transactions | 91 | 78·return·transactions | 
| 92 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 92 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 93 | 2 | 93 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 354, 13 lines modified | Offset 354, 13 lines modified | ||
| 354 | ····<div·class="content"> | 354 | ····<div·class="content"> | 
| 355 | ········<p> | 355 | ········<p> | 
| 356 | ············<a·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">«·prev</a>· ·  | 356 | ············<a·class="nav"·href="z_d331b95102e7fe3d_parser_py.html">«·prev</a>· ·  | 
| 357 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 357 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 358 | ············<a·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">»·next</a> | 358 | ············<a·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">»·next</a> | 
| 359 | ············ · ·  | 359 | ············ · ·  | 
| 360 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 360 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 361 | ············created·at·202 | 361 | ············created·at·2026-11-29·02:43·+1400 | 
| 362 | ········</p> | 362 | ········</p> | 
| 363 | ····</div> | 363 | ····</div> | 
| 364 | </footer> | 364 | </footer> | 
| 365 | </body> | 365 | </body> | 
| 366 | </html> | 366 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·111·statements· ·0·run·111·missing·1·excluded·***** | 11 | *****·111·statements· ·0·run·111·missing·1·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1#·encoding=utf-8 | 14 | 1#·encoding=utf-8 | 
| 15 | 2import·re | 15 | 2import·re | 
| 16 | 3import·functools | 16 | 3import·functools | 
| 17 | 4import·calendar | 17 | 4import·calendar | 
| 18 | 5import·collections | 18 | 5import·collections | 
| 19 | 6 | 19 | 6 | 
| 20 | 7 | 20 | 7 | 
| Offset 278, 9 lines modified | Offset 278, 9 lines modified | ||
| 278 | 263·for·key·in·keys: | 278 | 263·for·key·in·keys: | 
| 279 | 264·if·key·in·transactions.data: | 279 | 264·if·key·in·transactions.data: | 
| 280 | 265·result[key]·=·transactions.data[key] | 280 | 265·result[key]·=·transactions.data[key] | 
| 281 | 266 | 281 | 266 | 
| 282 | 267·return·result | 282 | 267·return·result | 
| 283 | 268 | 283 | 268 | 
| 284 | 269·return·_transactions_to_transaction | 284 | 269·return·_transactions_to_transaction | 
| 285 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 285 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 286 | 2 | 286 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_utils_py.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="z_d331b95102e7fe3d_utils_py.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 642, 13 lines modified | Offset 642, 13 lines modified | ||
| 642 | ····<div·class="content"> | 642 | ····<div·class="content"> | 
| 643 | ········<p> | 643 | ········<p> | 
| 644 | ············<a·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">«·prev</a>· ·  | 644 | ············<a·class="nav"·href="z_d331b95102e7fe3d_processors_py.html">«·prev</a>· ·  | 
| 645 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 645 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 646 | ············<a·class="nav"·href="z_d331b95102e7fe3d_utils_py.html">»·next</a> | 646 | ············<a·class="nav"·href="z_d331b95102e7fe3d_utils_py.html">»·next</a> | 
| 647 | ············ · ·  | 647 | ············ · ·  | 
| 648 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 648 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 649 | ············created·at·202 | 649 | ············created·at·2026-11-29·02:43·+1400 | 
| 650 | ········</p> | 650 | ········</p> | 
| 651 | ····</div> | 651 | ····</div> | 
| 652 | </footer> | 652 | </footer> | 
| 653 | </body> | 653 | </body> | 
| 654 | </html> | 654 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·166·statements· ·0·run·166·missing·20·excluded·***** | 11 | *****·166·statements· ·0·run·166·missing·20·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1#·vim:·fileencoding=utf-8: | 14 | 1#·vim:·fileencoding=utf-8: | 
| 15 | 2''' | 15 | 2''' | 
| 16 | 3 | 16 | 3 | 
| 17 | 4The·MT940·format·is·a·standard·for·bank·account·statements.·It·is·used·by | 17 | 4The·MT940·format·is·a·standard·for·bank·account·statements.·It·is·used·by | 
| 18 | 5many·banks·in·Europe·and·is·based·on·the·SWIFT·MT940·format. | 18 | 5many·banks·in·Europe·and·is·based·on·the·SWIFT·MT940·format. | 
| 19 | 6 | 19 | 6 | 
| 20 | 7The·MT940·tags·are: | 20 | 7The·MT940·tags·are: | 
| Offset 582, 9 lines modified | Offset 582, 9 lines modified | ||
| 582 | 551·NON_SWIFT·=·NonSwift() | 582 | 551·NON_SWIFT·=·NonSwift() | 
| 583 | 552·SUM_ENTRIES·=·SumEntries() | 583 | 552·SUM_ENTRIES·=·SumEntries() | 
| 584 | 553·SUM_DEBIT_ENTRIES·=·SumDebitEntries() | 584 | 553·SUM_DEBIT_ENTRIES·=·SumDebitEntries() | 
| 585 | 554·SUM_CREDIT_ENTRIES·=·SumCreditEntries() | 585 | 554·SUM_CREDIT_ENTRIES·=·SumCreditEntries() | 
| 586 | 555 | 586 | 555 | 
| 587 | 556 | 587 | 556 | 
| 588 | 557TAG_BY_ID·=·{t.value.id:·t.value·for·t·in·Tags} | 588 | 557TAG_BY_ID·=·{t.value.id:·t.value·for·t·in·Tags} | 
| 589 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 589 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 590 | 2 | 590 | 29·02:43·+1400 | 
| Offset 61, 15 lines modified | Offset 61, 15 lines modified | ||
| 61 | ········</h2> | 61 | ········</h2> | 
| 62 | ········<p·class="text"> | 62 | ········<p·class="text"> | 
| 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">«·prev</a>· ·  | 63 | ············<a·id="prevFileLink"·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">«·prev</a>· ·  | 
| 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 64 | ············<a·id="indexLink"·class="nav"·href="index.html">^·index</a>· ·  | 
| 65 | ············<a·id="nextFileLink"·class="nav"·href="index.html">»·next</a> | 65 | ············<a·id="nextFileLink"·class="nav"·href="index.html">»·next</a> | 
| 66 | ············ · ·  | 66 | ············ · ·  | 
| 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 67 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 68 | ············created·at·202 | 68 | ············created·at·2026-11-29·02:43·+1400 | 
| 69 | ········</p> | 69 | ········</p> | 
| 70 | ········<aside·class="hidden"> | 70 | ········<aside·class="hidden"> | 
| 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 71 | ············<button·type="button"·class="button_next_chunk"·data-shortcut="j"></button> | 
| 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 72 | ············<button·type="button"·class="button_prev_chunk"·data-shortcut="k"></button> | 
| 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 73 | ············<button·type="button"·class="button_top_of_page"·data-shortcut="0"></button> | 
| 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 74 | ············<button·type="button"·class="button_first_chunk"·data-shortcut="1"></button> | 
| 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 75 | ············<button·type="button"·class="button_prev_file"·data-shortcut="["></button> | 
| Offset 128, 13 lines modified | Offset 128, 13 lines modified | ||
| 128 | ····<div·class="content"> | 128 | ····<div·class="content"> | 
| 129 | ········<p> | 129 | ········<p> | 
| 130 | ············<a·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">«·prev</a>· ·  | 130 | ············<a·class="nav"·href="z_d331b95102e7fe3d_tags_py.html">«·prev</a>· ·  | 
| 131 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 131 | ············<a·class="nav"·href="index.html">^·index</a>· ·  | 
| 132 | ············<a·class="nav"·href="index.html">»·next</a> | 132 | ············<a·class="nav"·href="index.html">»·next</a> | 
| 133 | ············ · ·  | 133 | ············ · ·  | 
| 134 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 134 | ············<a·class="nav"·href="https://coverage.readthedocs.io/en/7.8.2">coverage.py·v7.8.2</a>, | 
| 135 | ············created·at·202 | 135 | ············created·at·2026-11-29·02:43·+1400 | 
| 136 | ········</p> | 136 | ········</p> | 
| 137 | ····</div> | 137 | ····</div> | 
| 138 | </footer> | 138 | </footer> | 
| 139 | </body> | 139 | </body> | 
| 140 | </html> | 140 | </html> | 
| Offset 5, 16 lines modified | Offset 5, 16 lines modified | ||
| 5 | j·k· ·next/prev·highlighted·chunk | 5 | j·k· ·next/prev·highlighted·chunk | 
| 6 | 0· ·(zero)·top·of·page | 6 | 0· ·(zero)·top·of·page | 
| 7 | 1· ·(one)·first·highlighted·chunk | 7 | 1· ·(one)·first·highlighted·chunk | 
| 8 | [·]· ·prev/next·file | 8 | [·]· ·prev/next·file | 
| 9 | u· ·up·to·the·index | 9 | u· ·up·to·the·index | 
| 10 | ?· ·show/hide·this·help | 10 | ?· ·show/hide·this·help | 
| 11 | *****·19·statements· ·0·run·19·missing·0·excluded·***** | 11 | *****·19·statements· ·0·run·19·missing·0·excluded·***** | 
| 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 12 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 13 | 2 | 13 | 29·02:43·+1400 | 
| 14 | 1import·enum | 14 | 1import·enum | 
| 15 | 2 | 15 | 2 | 
| 16 | 3 | 16 | 3 | 
| 17 | 4def·coalesce(*args): | 17 | 4def·coalesce(*args): | 
| 18 | 5·''' | 18 | 5·''' | 
| 19 | 6·Return·the·first·non-None·argument | 19 | 6·Return·the·first·non-None·argument | 
| 20 | 7 | 20 | 7 | 
| Offset 50, 9 lines modified | Offset 50, 9 lines modified | ||
| 50 | 37 | 50 | 37 | 
| 51 | 38·if·strip·&·Strip.LEFT: | 51 | 38·if·strip·&·Strip.LEFT: | 
| 52 | 39·line·=·line.lstrip() | 52 | 39·line·=·line.lstrip() | 
| 53 | 40 | 53 | 40 | 
| 54 | 41·lines.append(line) | 54 | 41·lines.append(line) | 
| 55 | 42 | 55 | 42 | 
| 56 | 43·return·''.join(lines) | 56 | 43·return·''.join(lines) | 
| 57 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·202 | 57 | «_prev· · ·^_index· · ·»_next· · · ·coverage.py_v7.8.2,·created·at·2026-11- | 
| 58 | 2 | 58 | 29·02:43·+1400 |