1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-12-25 09:30:31 +00:00

Bugfixes from testrun

This commit is contained in:
Ozzie Isaacs 2023-02-22 18:59:11 +01:00
parent fc31132f4e
commit 162ac73bee
3 changed files with 248 additions and 74 deletions

View File

@ -151,7 +151,7 @@ def parse_epub_cover(ns, tree, epub_zip, cover_path, tmp_file_path):
cover_file = None
for cs in cover_section:
if cs.endswith('.xhtml') or s.endswith('.html'):
if cs.endswith('.xhtml') or cs.endswith('.html'):
markup = epub_zip.read(os.path.join(cover_path, cs))
markup_tree = etree.fromstring(markup)
# no matter xhtml or html with no namespace

View File

@ -1161,18 +1161,15 @@ def serve_book(book_id, book_format, anyname):
data = calibre_db.get_book_format(book_id, book_format.upper())
if not data:
return "File not in Database"
range_header = request.headers.get('Range', None)
if not range_header:
log.info('Serving book: %s', data.name)
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format))
response.headers['Accept-Ranges'] = 'bytes'
return response
if config.config_use_google_drive:
try:
headers = Headers()
headers["Content-Type"] = mimetypes.types_map.get('.' + book_format, "application/octet-stream")
if not range_header:
log.info('Serving book: %s', data.name)
headers['Accept-Ranges'] = 'bytes'
df = getFileFromEbooksFolder(book.path, data.name + "." + book_format)
return do_gdrive_download(df, headers, (book_format.upper() == 'TXT'))
except AttributeError as ex:
@ -1180,6 +1177,7 @@ def serve_book(book_id, book_format, anyname):
return "File Not Found"
else:
if book_format.upper() == 'TXT':
log.info('Serving book: %s', data.name)
try:
rawdata = open(os.path.join(config.config_calibre_dir, book.path, data.name + "." + book_format),
"rb").read()
@ -1189,7 +1187,13 @@ def serve_book(book_id, book_format, anyname):
except FileNotFoundError:
log.error("File Not Found")
return "File Not Found"
return send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format)
# enable byte range read of pdf
response = make_response(
send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format))
if not range_header:
log.info('Serving book: %s', data.name)
response.headers['Accept-Ranges'] = 'bytes'
return response
@web.route("/download/<int:book_id>/<book_format>", defaults={'anyname': 'None'})

View File

@ -37,20 +37,20 @@
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;">
<p class='text-justify attribute'><strong>Start Time: </strong>2023-02-19 19:38:02</p>
<p class='text-justify attribute'><strong>Start Time: </strong>2023-02-21 20:53:24</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Stop Time: </strong>2023-02-20 01:56:35</p>
<p class='text-justify attribute'><strong>Stop Time: </strong>2023-02-22 03:08:32</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Duration: </strong>5h 23 min</p>
<p class='text-justify attribute'><strong>Duration: </strong>5h 18 min</p>
</div>
</div>
</div>
@ -936,11 +936,11 @@
<tr id="su" class="skipClass">
<tr id="su" class="failClass">
<td>TestEditBooks</td>
<td class="text-center">36</td>
<td class="text-center">35</td>
<td class="text-center">0</td>
<td class="text-center">34</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">
@ -1228,11 +1228,34 @@
<tr id='pt11.30' class='hiddenRow bg-success'>
<tr id="ft11.30" class="none bg-danger">
<td>
<div class='testcase'>TestEditBooks - test_upload_book_epub</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft11.30')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft11.30" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft11.30').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 948, in test_upload_book_epub
self.assertEqual(&#39;book9&#39;, details[&#39;title&#39;])
AssertionError: &#39;book9&#39; != &#39;book&#39;
- book9
? -
+ book</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -1607,12 +1630,12 @@
<tr id="su" class="failClass">
<tr id="su" class="errorClass">
<td>TestLoadMetadata</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c15', 1)">Detail</a>
@ -1621,26 +1644,26 @@
<tr id="ft15.1" class="none bg-danger">
<tr id="et15.1" class="none bg-info">
<td>
<div class='testcase'>TestLoadMetadata - test_load_metadata</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft15.1')">FAIL</a>
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et15.1')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_ft15.1" class="popup_window test_output" style="display:block;">
<div id="div_et15.1" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft15.1').style.display='none'"><span
onclick="document.getElementById('div_et15.1').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py&#34;, line 133, in test_load_metadata
self.assertEqual(20, len(results))
AssertionError: 20 != 10</pre>
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py&#34;, line 84, in test_load_metadata
elif &#39;https://amazon.com/&#39; == results[20][&#39;source&#39;]:
IndexError: list index out of range</pre>
</div>
<div class="clearfix"></div>
</div>
@ -1817,9 +1840,9 @@ AssertionError: 20 != 10</pre>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 230, in test_edit_title
self.assertEqual(ele.text, u&#39;Very long extra super turbo cool title without any issue of displaying including ö utf-8 characters&#39;)
AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py&#34;, line 185, in test_edit_title
self.assertEqual(&#39;The camicdemo&#39;, books[1][8][&#39;title&#39;])
IndexError: list index out of range</pre>
</div>
<div class="clearfix"></div>
</div>
@ -2174,11 +2197,11 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id="su" class="passClass">
<tr id="su" class="failClass">
<td>TestKoboSync</td>
<td class="text-center">11</td>
<td class="text-center">11</td>
<td class="text-center">0</td>
<td class="text-center">10</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@ -2278,11 +2301,38 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id='pt25.11' class='hiddenRow bg-success'>
<tr id="ft25.11" class="none bg-danger">
<td>
<div class='testcase'>TestKoboSync - test_sync_upload</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft25.11')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft25.11" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft25.11').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_kobo_sync.py&#34;, line 270, in test_sync_upload
self.assertEqual([&#39;Noname 23&#39;], data[0][&#39;NewEntitlement&#39;][&#39;BookMetadata&#39;][&#39;Contributors&#39;])
AssertionError: Lists differ: [&#39;Noname 23&#39;] != [&#39;Unknown&#39;]
First differing element 0:
&#39;Noname 23&#39;
&#39;Unknown&#39;
- [&#39;Noname 23&#39;]
+ [&#39;Unknown&#39;]</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -3220,11 +3270,11 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id="su" class="passClass">
<tr id="su" class="failClass">
<td>TestReader</td>
<td class="text-center">5</td>
<td class="text-center">5</td>
<td class="text-center">0</td>
<td class="text-center">3</td>
<td class="text-center">2</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@ -3234,11 +3284,31 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id='pt36.1' class='hiddenRow bg-success'>
<tr id="ft36.1" class="none bg-danger">
<td>
<div class='testcase'>TestReader - test_comic_reader</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft36.1')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft36.1" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft36.1').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 182, in test_comic_reader
self.assertTrue(content)
AssertionError: False is not true</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -3270,11 +3340,31 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id='pt36.5' class='hiddenRow bg-success'>
<tr id="ft36.5" class="none bg-danger">
<td>
<div class='testcase'>TestReader - test_txt_reader</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft36.5')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft36.5" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft36.5').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_reader.py&#34;, line 67, in test_txt_reader
self.assertTrue(&#39;hörte&#39; in content.text, &#39;Encoding of textfile viewer is not respected properly&#39;)
AssertionError: False is not true : Encoding of textfile viewer is not respected properly</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -3636,8 +3726,8 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id="su" class="failClass">
<td>TestThumbnails</td>
<td class="text-center">8</td>
<td class="text-center">5</td>
<td class="text-center">2</td>
<td class="text-center">3</td>
<td class="text-center">4</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">
@ -3656,11 +3746,31 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<tr id='pt42.2' class='hiddenRow bg-success'>
<tr id="ft42.2" class="none bg-danger">
<td>
<div class='testcase'>TestThumbnails - test_cache_of_deleted_book</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft42.2')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft42.2" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft42.2').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 187, in test_cache_of_deleted_book
self.assertEqual(book_thumbnail_reference, 2)
AssertionError: 0 != 2</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -3693,7 +3803,7 @@ AttributeError: &#39;bool&#39; object has no attribute &#39;text&#39;</pre>
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 135, in test_cover_change_on_upload_new_cover
self.assertGreaterEqual(diff(BytesIO(updated_cover), BytesIO(original_cover), delete_diff_file=True), 0.03)
AssertionError: 0.029520666495068845 not greater than or equal to 0.03</pre>
AssertionError: 0.02977373520222651 not greater than or equal to 0.03</pre>
</div>
<div class="clearfix"></div>
</div>
@ -3712,11 +3822,31 @@ AssertionError: 0.029520666495068845 not greater than or equal to 0.03</pre>
<tr id='pt42.6' class='hiddenRow bg-success'>
<tr id="ft42.6" class="none bg-danger">
<td>
<div class='testcase'>TestThumbnails - test_cover_on_upload_book</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft42.6')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft42.6" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft42.6').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 247, in test_cover_on_upload_book
self.assertEqual(book_thumbnail_reference+2, count_files(thumbnail_cache_path))
AssertionError: 222 != 220</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -3747,9 +3877,9 @@ AssertionError: 0.029520666495068845 not greater than or equal to 0.03</pre>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 310, in test_sideloaded_book
self.assertAlmostEqual(diff(BytesIO(list_cover), BytesIO(old_list_cover), delete_diff_file=True), 0.0,
AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.006835200746965453 difference)</pre>
File &#34;/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py&#34;, line 320, in test_sideloaded_book
self.assertGreaterEqual(diff(BytesIO(list_cover), BytesIO(new_list_cover), delete_diff_file=True), 0.04)
AssertionError: 0.0 not greater than or equal to 0.04</pre>
</div>
<div class="clearfix"></div>
</div>
@ -3873,11 +4003,11 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr id="su" class="passClass">
<tr id="su" class="failClass">
<td>TestUploadEPubs</td>
<td class="text-center">5</td>
<td class="text-center">5</td>
<td class="text-center">0</td>
<td class="text-center">3</td>
<td class="text-center">2</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@ -3887,20 +4017,60 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr id='pt44.1' class='hiddenRow bg-success'>
<tr id="ft44.1" class="none bg-danger">
<td>
<div class='testcase'>TestUploadEPubs - test_upload_epub_cover</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft44.1')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft44.1" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft44.1').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_upload_epubs.py&#34;, line 136, in test_upload_epub_cover
self.assertAlmostEqual(diff(BytesIO(original), BytesIO(cover_image), delete_diff_file=True), 0.0, delta=0.0001)
AssertionError: 0.04598719156221104 != 0.0 within 0.0001 delta (0.04598719156221104 difference)</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
<tr id='pt44.2' class='hiddenRow bg-success'>
<tr id="ft44.2" class="none bg-danger">
<td>
<div class='testcase'>TestUploadEPubs - test_upload_epub_cover_formats</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft44.2')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft44.2" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft44.2').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_upload_epubs.py&#34;, line 205, in test_upload_epub_cover_formats
self.assertAlmostEqual(diff(BytesIO(original), BytesIO(cover_image), delete_diff_file=True), 0.0058,
AssertionError: 0.051106144230518215 != 0.0058 within 0.0001 delta (0.045306144230518215 difference)</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@ -4829,9 +4999,9 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr id='total_row' class="text-center bg-grey">
<td>Total</td>
<td>425</td>
<td>414</td>
<td>3</td>
<td>1</td>
<td>406</td>
<td>10</td>
<td>2</td>
<td>7</td>
<td>&nbsp;</td>
</tr>
@ -5010,7 +5180,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestCliGdrivedb</td>
</tr>
@ -5028,7 +5198,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestCliGdrivedb</td>
</tr>
@ -5040,7 +5210,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestEbookConvertCalibreGDrive</td>
</tr>
@ -5058,7 +5228,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestEbookConvertCalibreGDrive</td>
</tr>
@ -5070,7 +5240,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestEbookConvertGDriveKepubify</td>
</tr>
@ -5088,7 +5258,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestEbookConvertGDriveKepubify</td>
</tr>
@ -5112,7 +5282,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestEditAuthorsGdrive</td>
</tr>
@ -5130,7 +5300,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestEditAuthorsGdrive</td>
</tr>
@ -5148,7 +5318,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestEditBooksOnGdrive</td>
</tr>
@ -5166,7 +5336,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestEditBooksOnGdrive</td>
</tr>
@ -5190,7 +5360,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>google-api-python-client</th>
<td>2.78.0</td>
<td>2.79.0</td>
<td>TestSetupGdrive</td>
</tr>
@ -5208,7 +5378,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
<tr>
<th>PyDrive2</th>
<td>1.15.0</td>
<td>1.15.1</td>
<td>TestSetupGdrive</td>
</tr>
@ -5280,7 +5450,7 @@ AssertionError: 0.006835200746965453 != 0.0 within 0.0001 delta (0.0068352007469
</div>
<script>
drawCircle(414, 3, 1, 7);
drawCircle(406, 10, 2, 7);
showCase(5);
</script>