Incremented version number

This commit is contained in:
Mike Young
2020-01-01 09:55:47 -05:00
parent 16aab465b7
commit 964e8dc20a
57 changed files with 4988 additions and 776 deletions

View File

@@ -0,0 +1,462 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Catalogue Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">pyShelf Open Source Ebook Server
&#160;<span id="projectnumber">0.4.0</span>
</div>
<div id="projectbrief">Open source, console based E-book server</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>src</b></li><li class="navelem"><b>backend</b></li><li class="navelem"><b>tests</b></li><li class="navelem"><b>library_test</b></li><li class="navelem"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html">Test_Catalogue</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">src.backend.tests.library_test.Test_Catalogue Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for src.backend.tests.library_test.Test_Catalogue:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png" usemap="#src.backend.tests.library_5Ftest.Test_5FCatalogue_map" alt=""/>
<map id="src.backend.tests.library_5Ftest.Test_5FCatalogue_map" name="src.backend.tests.library_5Ftest.Test_5FCatalogue_map">
<area href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html" alt="src.backend.lib.library.Catalogue" shape="rect" coords="0,0,269,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8e47e8b49226d58e6eaedeba65d16308"><td class="memItemLeft" align="right" valign="top"><a id="a8e47e8b49226d58e6eaedeba65d16308"></a>
def&#160;</td><td class="memItemRight" valign="bottom"><b>__init__</b> (self)</td></tr>
<tr class="separator:a8e47e8b49226d58e6eaedeba65d16308"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad708c5a24143ca6fb38733f62396ee21"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html#ad708c5a24143ca6fb38733f62396ee21">filter_books</a> (self)</td></tr>
<tr class="separator:ad708c5a24143ca6fb38733f62396ee21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a204c5171b7de8ddd199563fd1b252032"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a204c5171b7de8ddd199563fd1b252032">scan_folder</a> (self, _path=None)</td></tr>
<tr class="separator:a204c5171b7de8ddd199563fd1b252032"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abab8649249ef71103f314aa29644a739"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abab8649249ef71103f314aa29644a739">extract_metadata</a> (self, book)</td></tr>
<tr class="separator:abab8649249ef71103f314aa29644a739"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a0993bce2b4fe64a46d96a5eba1d5af50">extract_content</a> (self, book_zip, book)</td></tr>
<tr class="separator:a0993bce2b4fe64a46d96a5eba1d5af50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abcf0dc2d816393afbfb07ea9f5c152f9">extract_cover_html</a> (self, book_zip, book)</td></tr>
<tr class="separator:abcf0dc2d816393afbfb07ea9f5c152f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd1c3b416586faaabb37515705588a89"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#abd1c3b416586faaabb37515705588a89">extract_cover_image</a> (self, book_zip, book)</td></tr>
<tr class="separator:abd1c3b416586faaabb37515705588a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a75b4d33e6dee46d4d18e6623d30f6dd2">compare_shelf_current</a> (self)</td></tr>
<tr class="separator:a75b4d33e6dee46d4d18e6623d30f6dd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af56675f98c8db93b6ca8c6731fde8e45"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#af56675f98c8db93b6ca8c6731fde8e45">import_books</a> (self, list=None)</td></tr>
<tr class="separator:af56675f98c8db93b6ca8c6731fde8e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aedf70ab79105f8251d36848fb790fb9f"><td class="memItemLeft" align="right" valign="top">def&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#aedf70ab79105f8251d36848fb790fb9f">process_book</a> (book)</td></tr>
<tr class="separator:aedf70ab79105f8251d36848fb790fb9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ae45671c4e95d835b38bb83002ec8dd54"><td class="memItemLeft" align="right" valign="top"><a id="ae45671c4e95d835b38bb83002ec8dd54"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_shelf</b></td></tr>
<tr class="separator:ae45671c4e95d835b38bb83002ec8dd54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memItemLeft" align="right" valign="top"><a id="ac443ee74f10c7e2e128ddb2f0dfe045e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>file_list</b></td></tr>
<tr class="separator:ac443ee74f10c7e2e128ddb2f0dfe045e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2026c090be4f55cfe941d16a01b4ea75"><td class="memItemLeft" align="right" valign="top"><a id="a2026c090be4f55cfe941d16a01b4ea75"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>opf_regx</b></td></tr>
<tr class="separator:a2026c090be4f55cfe941d16a01b4ea75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a576649115ba3717c475d60eae96f6204"><td class="memItemLeft" align="right" valign="top"><a id="a576649115ba3717c475d60eae96f6204"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>cover_regx</b></td></tr>
<tr class="separator:a576649115ba3717c475d60eae96f6204"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a686b224643b060423a49a017d4a7abd8"><td class="memItemLeft" align="right" valign="top"><a id="a686b224643b060423a49a017d4a7abd8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>html_regx</b></td></tr>
<tr class="separator:a686b224643b060423a49a017d4a7abd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e5edca4ab942e3f71958c90b5c45023"><td class="memItemLeft" align="right" valign="top"><a id="a3e5edca4ab942e3f71958c90b5c45023"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>root_dir</b></td></tr>
<tr class="separator:a3e5edca4ab942e3f71958c90b5c45023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a340d869b8f7c16007773de40a24005ce"><td class="memItemLeft" align="right" valign="top"><a id="a340d869b8f7c16007773de40a24005ce"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>book_folder</b></td></tr>
<tr class="separator:a340d869b8f7c16007773de40a24005ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1129571b5c1a358e71d125cc47f9bf36"><td class="memItemLeft" align="right" valign="top"><a id="a1129571b5c1a358e71d125cc47f9bf36"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>books</b></td></tr>
<tr class="separator:a1129571b5c1a358e71d125cc47f9bf36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd6cb62aae1221ee590734b70f76888a"><td class="memItemLeft" align="right" valign="top"><a id="acd6cb62aae1221ee590734b70f76888a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>db_pointer</b></td></tr>
<tr class="separator:acd6cb62aae1221ee590734b70f76888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb43be37337c74fc1bfe1415ded423f9"><td class="memItemLeft" align="right" valign="top"><a id="afb43be37337c74fc1bfe1415ded423f9"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>config</b></td></tr>
<tr class="separator:afb43be37337c74fc1bfe1415ded423f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a75b4d33e6dee46d4d18e6623d30f6dd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75b4d33e6dee46d4d18e6623d30f6dd2">&#9670;&nbsp;</a></span>compare_shelf_current()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.compare_shelf_current </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls storage system, gets list of books stored and compares against files on disk
</pre>
</div>
</div>
<a id="a0993bce2b4fe64a46d96a5eba1d5af50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0993bce2b4fe64a46d96a5eba1d5af50">&#9670;&nbsp;</a></span>extract_content()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_content </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching opf_regx
</pre>
</div>
</div>
<a id="abcf0dc2d816393afbfb07ea9f5c152f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcf0dc2d816393afbfb07ea9f5c152f9">&#9670;&nbsp;</a></span>extract_cover_html()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_html </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching html_regx
</pre>
</div>
</div>
<a id="abd1c3b416586faaabb37515705588a89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1c3b416586faaabb37515705588a89">&#9670;&nbsp;</a></span>extract_cover_image()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_cover_image </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book_zip</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Opens epub as zip file filters then stores as list any files matching cover_regx
</pre>
</div>
</div>
<a id="abab8649249ef71103f314aa29644a739"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abab8649249ef71103f314aa29644a739">&#9670;&nbsp;</a></span>extract_metadata()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.extract_metadata </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return extracted metadata and cover picture
book['path'] == Full path to ebook file
book['files'] == list of files from self.process_book(book)
</pre>
</div>
</div>
<a id="ad708c5a24143ca6fb38733f62396ee21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad708c5a24143ca6fb38733f62396ee21">&#9670;&nbsp;</a></span>filter_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">def src.backend.tests.library_test.Test_Catalogue.filter_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Calls scan_folder and filters out book files
Proceeds to call process_book
:returns self._book_list_expanded: json string containing all book metadata
</pre>
<p>Reimplemented from <a class="el" href="../../d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html#a9dec8499f181aee506861142004d002d">src.backend.lib.library.Catalogue</a>.</p>
</div>
</div>
<a id="af56675f98c8db93b6ca8c6731fde8e45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af56675f98c8db93b6ca8c6731fde8e45">&#9670;&nbsp;</a></span>import_books()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.import_books </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>list</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Main entry point for import operations.
Gets a list of new files via compare_shelf_current.
Iterates over list and inserts new books into database.
</pre>
</div>
</div>
<a id="aedf70ab79105f8251d36848fb790fb9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedf70ab79105f8251d36848fb790fb9f">&#9670;&nbsp;</a></span>process_book()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.process_book </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>book</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Return dictionary of epub file contents</pre>
</div>
</div>
<a id="a204c5171b7de8ddd199563fd1b252032"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a204c5171b7de8ddd199563fd1b252032">&#9670;&nbsp;</a></span>scan_folder()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">def src.backend.lib.library.Catalogue.scan_folder </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>self</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>_path</em> = <code>None</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Scan folder by _path, allows recurisive scanning
</pre>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/backend/tests/<a class="el" href="../../">library_test.py</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 1 2020 09:54:41 for pyShelf Open Source Ebook Server by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B