2026-06-20 12:55:58 +00:00

703 lines
33 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Coverage report</title>
<link rel="icon" sizes="32x32" href="favicon_32_cb_c827f16f.png">
<link rel="stylesheet" href="style_cb_4667309f.css" type="text/css">
<script src="coverage_html_cb_dd2e7eb5.js" defer></script>
</head>
<body class="indexfile">
<header>
<div class="content">
<h1>Coverage report:
<span class="pc_cov">73%</span>
</h1>
<aside id="help_panel_wrapper">
<input id="help_panel_state" type="checkbox">
<label for="help_panel_state">
<img id="keyboard_icon" src="keybd_closed_cb_900cfef5.png" alt="Show/hide keyboard shortcuts">
</label>
<div id="help_panel">
<p class="legend">Shortcuts on this page</p>
<div class="keyhelp">
<p>
<kbd>f</kbd>
<kbd>s</kbd>
<kbd>m</kbd>
<kbd>x</kbd>
<kbd>c</kbd>
&nbsp; change column sorting
</p>
<p>
<kbd>[</kbd>
<kbd>]</kbd>
&nbsp; prev/next file
</p>
<p>
<kbd>?</kbd> &nbsp; show/hide this help
</p>
</div>
</div>
</aside>
<form id="filter_container">
<input id="filter" type="text" value="" placeholder="filter...">
<div>
<input id="hide100" type="checkbox" >
<label for="hide100">hide covered</label>
</div>
</form>
<h2>
<a class="button current">Files</a>
<a class="button" href="function_index.html">Functions</a>
<a class="button" href="class_index.html">Classes</a>
</h2>
<p class="text">
<a class="nav" href="https://coverage.readthedocs.io/en/7.14.1">coverage.py v7.14.1</a>,
created at 2026-06-20 12:55 +0000
</p>
</div>
</header>
<main id="index">
<table class="index" data-sortable>
<thead>
<tr class="tablehead" title="Click to sort">
<th id="file" class="name" aria-sort="none" data-shortcut="f">File<span class="arrows"></span></th>
<th class="spacer">&nbsp;</th>
<th id="statements" aria-sort="none" data-default-sort-order="descending" data-shortcut="s">statements<span class="arrows"></span></th>
<th id="missing" aria-sort="none" data-default-sort-order="descending" data-shortcut="m">missing<span class="arrows"></span></th>
<th id="excluded" aria-sort="none" data-default-sort-order="descending" data-shortcut="x">excluded<span class="arrows"></span></th>
<th class="spacer">&nbsp;</th>
<th id="coverage" aria-sort="none" data-shortcut="c">coverage<span class="arrows"></span></th>
</tr>
</thead>
<tbody>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391___init___py.html">pyPhotoAlbum<span class="sep">/</span>__init__.py</a></td>
<td class="spacer">&nbsp;</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="3 3">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_alignment_py.html">pyPhotoAlbum<span class="sep">/</span>alignment.py</a></td>
<td class="spacer">&nbsp;</td>
<td>388</td>
<td>34</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="354 388">91%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_asset_heal_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>asset_heal_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>154</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="154 154">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_asset_manager_py.html">pyPhotoAlbum<span class="sep">/</span>asset_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>215</td>
<td>47</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="168 215">78%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_async_backend_py.html">pyPhotoAlbum<span class="sep">/</span>async_backend.py</a></td>
<td class="spacer">&nbsp;</td>
<td>363</td>
<td>98</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="265 363">73%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_async_project_loader_py.html">pyPhotoAlbum<span class="sep">/</span>async_project_loader.py</a></td>
<td class="spacer">&nbsp;</td>
<td>131</td>
<td>112</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="19 131">15%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_autosave_manager_py.html">pyPhotoAlbum<span class="sep">/</span>autosave_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>103</td>
<td>7</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="96 103">93%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_commands_py.html">pyPhotoAlbum<span class="sep">/</span>commands.py</a></td>
<td class="spacer">&nbsp;</td>
<td>384</td>
<td>39</td>
<td>22</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="345 384">90%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_decorators_py.html">pyPhotoAlbum<span class="sep">/</span>decorators.py</a></td>
<td class="spacer">&nbsp;</td>
<td>105</td>
<td>22</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="83 105">79%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_9805201c082d6516___init___py.html">pyPhotoAlbum<span class="sep">/</span>dialogs<span class="sep">/</span>__init__.py</a></td>
<td class="spacer">&nbsp;</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="3 3">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_9805201c082d6516_frame_picker_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>dialogs<span class="sep">/</span>frame_picker_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>205</td>
<td>205</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="0 205">0%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_9805201c082d6516_page_setup_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>dialogs<span class="sep">/</span>page_setup_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>183</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="183 183">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_9805201c082d6516_print_settings_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>dialogs<span class="sep">/</span>print_settings_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>51</td>
<td>44</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="7 51">14%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_9805201c082d6516_style_dialogs_py.html">pyPhotoAlbum<span class="sep">/</span>dialogs<span class="sep">/</span>style_dialogs.py</a></td>
<td class="spacer">&nbsp;</td>
<td>182</td>
<td>182</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="0 182">0%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_frame_manager_py.html">pyPhotoAlbum<span class="sep">/</span>frame_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>357</td>
<td>275</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="82 357">23%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_gl_imports_py.html">pyPhotoAlbum<span class="sep">/</span>gl_imports.py</a></td>
<td class="spacer">&nbsp;</td>
<td>26</td>
<td>23</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="3 26">12%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_gl_widget_py.html">pyPhotoAlbum<span class="sep">/</span>gl_widget.py</a></td>
<td class="spacer">&nbsp;</td>
<td>178</td>
<td>112</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="66 178">37%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_image_utils_py.html">pyPhotoAlbum<span class="sep">/</span>image_utils.py</a></td>
<td class="spacer">&nbsp;</td>
<td>150</td>
<td>36</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="114 150">76%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_loading_widget_py.html">pyPhotoAlbum<span class="sep">/</span>loading_widget.py</a></td>
<td class="spacer">&nbsp;</td>
<td>78</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="78 78">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_main_py.html">pyPhotoAlbum<span class="sep">/</span>main.py</a></td>
<td class="spacer">&nbsp;</td>
<td>222</td>
<td>222</td>
<td>2</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="0 222">0%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_merge_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>merge_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>210</td>
<td>33</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="177 210">84%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_merge_manager_py.html">pyPhotoAlbum<span class="sep">/</span>merge_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>202</td>
<td>56</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="146 202">72%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78___init___py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>__init__.py</a></td>
<td class="spacer">&nbsp;</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="3 3">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_asset_drop_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>asset_drop.py</a></td>
<td class="spacer">&nbsp;</td>
<td>87</td>
<td>4</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="83 87">95%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_asset_path_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>asset_path.py</a></td>
<td class="spacer">&nbsp;</td>
<td>25</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="25 25">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_async_loading_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>async_loading.py</a></td>
<td class="spacer">&nbsp;</td>
<td>112</td>
<td>2</td>
<td>2</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="110 112">98%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_base_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>base.py</a></td>
<td class="spacer">&nbsp;</td>
<td>86</td>
<td>1</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="85 86">99%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_dialog_mixin_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>dialog_mixin.py</a></td>
<td class="spacer">&nbsp;</td>
<td>18</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="18 18">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_element_manipulation_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>element_manipulation.py</a></td>
<td class="spacer">&nbsp;</td>
<td>80</td>
<td>3</td>
<td>3</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="77 80">96%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_element_selection_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>element_selection.py</a></td>
<td class="spacer">&nbsp;</td>
<td>51</td>
<td>1</td>
<td>2</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="50 51">98%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_image_pan_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>image_pan.py</a></td>
<td class="spacer">&nbsp;</td>
<td>42</td>
<td>2</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="40 42">95%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_interaction_command_builders_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>interaction_command_builders.py</a></td>
<td class="spacer">&nbsp;</td>
<td>98</td>
<td>11</td>
<td>28</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="87 98">89%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_interaction_command_factory_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>interaction_command_factory.py</a></td>
<td class="spacer">&nbsp;</td>
<td>54</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="54 54">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_interaction_undo_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>interaction_undo.py</a></td>
<td class="spacer">&nbsp;</td>
<td>44</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="44 44">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_interaction_validators_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>interaction_validators.py</a></td>
<td class="spacer">&nbsp;</td>
<td>59</td>
<td>12</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="47 59">80%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_keyboard_navigation_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>keyboard_navigation.py</a></td>
<td class="spacer">&nbsp;</td>
<td>96</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="96 96">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_mouse_interaction_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>mouse_interaction.py</a></td>
<td class="spacer">&nbsp;</td>
<td>253</td>
<td>8</td>
<td>20</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="245 253">97%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb___init___py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>__init__.py</a></td>
<td class="spacer">&nbsp;</td>
<td>13</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="13 13">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_alignment_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>alignment_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>50</td>
<td>14</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="36 50">72%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_distribution_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>distribution_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>28</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="28 28">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_edit_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>edit_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>75</td>
<td>6</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="69 75">92%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_element_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>element_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>70</td>
<td>6</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="64 70">91%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_file_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>file_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>521</td>
<td>139</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="382 521">73%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_merge_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>merge_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>71</td>
<td>1</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="70 71">99%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_page_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>page_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>135</td>
<td>5</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="130 135">96%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_size_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>size_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>66</td>
<td>1</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="65 66">98%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_style_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>style_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>166</td>
<td>139</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="27 166">16%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_template_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>template_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>180</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="180 180">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_view_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>view_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>185</td>
<td>32</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="153 185">83%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_49d8e0368ee083bb_zorder_ops_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>operations<span class="sep">/</span>zorder_ops.py</a></td>
<td class="spacer">&nbsp;</td>
<td>107</td>
<td>9</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="98 107">92%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_page_navigation_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>page_navigation.py</a></td>
<td class="spacer">&nbsp;</td>
<td>116</td>
<td>15</td>
<td>2</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="101 116">87%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_rendering_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>rendering.py</a></td>
<td class="spacer">&nbsp;</td>
<td>241</td>
<td>45</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="196 241">81%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_d7b118d2bba6ff78_viewport_py.html">pyPhotoAlbum<span class="sep">/</span>mixins<span class="sep">/</span>viewport.py</a></td>
<td class="spacer">&nbsp;</td>
<td>143</td>
<td>5</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="138 143">97%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_models_py.html">pyPhotoAlbum<span class="sep">/</span>models.py</a></td>
<td class="spacer">&nbsp;</td>
<td>450</td>
<td>50</td>
<td>25</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="400 450">89%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_page_layout_py.html">pyPhotoAlbum<span class="sep">/</span>page_layout.py</a></td>
<td class="spacer">&nbsp;</td>
<td>185</td>
<td>1</td>
<td>2</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="184 185">99%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_page_renderer_py.html">pyPhotoAlbum<span class="sep">/</span>page_renderer.py</a></td>
<td class="spacer">&nbsp;</td>
<td>41</td>
<td>4</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="37 41">90%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_pdf_exporter_py.html">pyPhotoAlbum<span class="sep">/</span>pdf_exporter.py</a></td>
<td class="spacer">&nbsp;</td>
<td>545</td>
<td>180</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="365 545">67%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_project_py.html">pyPhotoAlbum<span class="sep">/</span>project.py</a></td>
<td class="spacer">&nbsp;</td>
<td>234</td>
<td>61</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="173 234">74%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_project_serializer_py.html">pyPhotoAlbum<span class="sep">/</span>project_serializer.py</a></td>
<td class="spacer">&nbsp;</td>
<td>204</td>
<td>91</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="113 204">55%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_ribbon_builder_py.html">pyPhotoAlbum<span class="sep">/</span>ribbon_builder.py</a></td>
<td class="spacer">&nbsp;</td>
<td>101</td>
<td>4</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="97 101">96%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_ribbon_widget_py.html">pyPhotoAlbum<span class="sep">/</span>ribbon_widget.py</a></td>
<td class="spacer">&nbsp;</td>
<td>72</td>
<td>2</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="70 72">97%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_snapping_py.html">pyPhotoAlbum<span class="sep">/</span>snapping.py</a></td>
<td class="spacer">&nbsp;</td>
<td>209</td>
<td>11</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="198 209">95%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_template_manager_py.html">pyPhotoAlbum<span class="sep">/</span>template_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>210</td>
<td>12</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="198 210">94%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_text_edit_dialog_py.html">pyPhotoAlbum<span class="sep">/</span>text_edit_dialog.py</a></td>
<td class="spacer">&nbsp;</td>
<td>78</td>
<td>0</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="78 78">100%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_thumbnail_browser_py.html">pyPhotoAlbum<span class="sep">/</span>thumbnail_browser.py</a></td>
<td class="spacer">&nbsp;</td>
<td>517</td>
<td>295</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="222 517">43%</td>
</tr>
<tr class="region">
<td class="name"><a href="z_92dc0df82e175391_version_manager_py.html">pyPhotoAlbum<span class="sep">/</span>version_manager.py</a></td>
<td class="spacer">&nbsp;</td>
<td>133</td>
<td>39</td>
<td>0</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="94 133">71%</td>
</tr>
</tbody>
<tfoot>
<tr class="total">
<td class="name">Total</td>
<td class="spacer">&nbsp;</td>
<td>10147</td>
<td>2758</td>
<td>108</td>
<td class="spacer">&nbsp;</td>
<td data-ratio="7389 10147">73%</td>
</tr>
</tfoot>
</table>
<p id="no_rows">
No items found using the specified filter.
</p>
</main>
<footer>
<div class="content">
<p>
<a class="nav" href="https://coverage.readthedocs.io/en/7.14.1">coverage.py v7.14.1</a>,
created at 2026-06-20 12:55 +0000
</p>
</div>
<aside class="hidden">
<a id="prevFileLink" class="nav" href="z_92dc0df82e175391_version_manager_py.html"></a>
<a id="nextFileLink" class="nav" href="z_92dc0df82e175391___init___py.html"></a>
<button type="button" class="button_prev_file" data-shortcut="["></button>
<button type="button" class="button_next_file" data-shortcut="]"></button>
<button type="button" class="button_show_hide_help" data-shortcut="?"></button>
</aside>
</footer>
</body>
</html>