From 1d15fe84c0fd2ec6cc9447c0ab0a2f38ac7b2483 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Wed, 5 Sep 2018 12:54:18 -0400 Subject: [PATCH] Use six for reraise --- resources/compiled_coffeescript.zip | Bin 103270 -> 102944 bytes src/calibre/db/backend.py | 3 ++- src/calibre/ebooks/readability/readability.py | 3 ++- src/calibre/gui2/icon_theme.py | 3 ++- src/calibre/gui2/linux_file_dialogs.py | 3 ++- src/calibre/srv/http_response.py | 4 +++- src/calibre/utils/shared_file.py | 11 +++++++++-- src/duktape/__init__.py | 5 +++-- 8 files changed, 23 insertions(+), 9 deletions(-) diff --git a/resources/compiled_coffeescript.zip b/resources/compiled_coffeescript.zip index bffc6a79dd16004a953e2e075e6355d71af48bb6..0a11d0d6c4aa54c7d987881e1760a52e295a0966 100644 GIT binary patch delta 2528 zcmZWr3v5%@8TRjIY>1tQ9ou=3>yn3)7&o@l#vx4>LIWg@+msYUatS4v>(;@ugY7_4 zNCAx@t)&F~H#sVO!9ZmNb+Fy3-XpXHsa3nK1FCNACWg?4s%cX@?IE#|h3%Yc$2j6f z$2tE!|M|cF@tyzNuijLjIIS-4^C^@@8GBSGs{GGZ-2RH+DwDBcm65_JF#X6iq`+^z zXT>v$Z}1P}27FWLBiFsak$Epvlc%~sGouF$u2J#iNDJ7=g%+?&ukoL%;L;HX7ZxHe z2Nx59cwS@1ed?a+PeDg+jY0t$Ml=|hEkgIcA~b3aYBJh*LbIMJXSE%UJ!J*w4z{AGMdMa^kZEai=w|6hol7xqHg@^07ni|e-$KM$r5dUj@ zA5imZ1G>%C$eTTwG;hX#m`%9E;=&Hg5T3MbL4~zb!PP%_s@tm8OK9|mCTMpkA`Vnu z0xYwY6*4Fr#r0;a+p*iWOnkF*+PU-@0Ftu6mfn-Ze|alihJZldqRi!Yzd) zMAK&7yo&?*;@7B|K&g4d{}W&fP1tzag6AJE%x8k+1`7_aJU*{usu^>Y8@*WY#G}%y zv=X_~0Ht`LQiC6F{LiUp*F(J!i#a&P4F@+G4Mo_|x#uN41JoR4rR3eo{#)ogRU{W; z1h#`ooPH8OLDw_RsPU&8s+Usvo!|sVXmhkU0+T>Ma-@(6M?+81$@UYD#mT)p~iLxgd)}Ri0rr_~Sq+kfaI9 z@Zwk=&JS9!m|t$qX&OQIf&tbwu#dOk!?PxQ`%pe^o~_Vs53$OHq7m}L1}MP~dApwD z0%I{outv5M|IKg5!Oe|0RHwnI%|`O68MOGTYAre9gj&2bTZ&r~#pGxgEG7MQP<$_{ zKE7o7BQW4whYBf_)s%&zrfD2*euTz`@AD=xIi!%v??Et_@cb4HE59e3Zt;UH2jofx zZQx?h@c-(HCf}&?m;6A>TXnRJ(_u@uavXhOht$gd^}>35YhS)NarkL^;sJI*JYL^sxgm1UJWCF~L+31=W2qW?BYok>i*GyqD5CtjP@mMGaJBHlRnWsy?O zW?*PriRJ$}n1ld(~j_J(}N4cnMIRC=L-^m<_`dlMbaUOtyed?j?CWv7vRv=WBNUb1QVr=)i;z z9?+1R%}|g!-3oJZgySWtciLeBNMi@s@s(Gssdxw60Tn$R(O7CnCp5_!^~rnyEcn?9 zBkGIQsZSmSrJP({1K(w=r%nfj;lx-B&+J~NOHT!Q$Wt$_g#ysC@SpqSbKz#5Om;Jm zoLdLaNl|xpLn9gMhc8KQ4=g9=67*6$(*wOwPj2@>1-l}M#Rn|}cR>|SzTHWF=7U4F zkkl`w_4n;MTkr5( zqx4~8S#}4TeEkyJ<&elnR!vd(J7?4Iu_-8#m`Dz@*T20ey`D)z-Xin&Gc?!!UKjcM z6x7)k7n1Qf_j!3OkPGXe+?g9K%a?vt`Hjz7WimF(b9cyo+y^ppB?;x`KA%d>mbCQm zHMvao?qQIfm+v9_lQ2jO#~_bogp3}8)zo(%%W5-$V=zEw*FgdK{3xs@z9e)L@fdWG K-zT9RCjSrF1rC=0 delta 3396 zcma)94NP0t752eD7$@N`j`<7Z0SRDm2)0R00_3Lz2PhC1$e?k^!!eIw)v=jv0<@$F z>d(|B{N*mW{axC%iZo?g#$Gz6b!i(-i>hi;h}LP*w5(GXOVYIXT0gFLI&K(ZK;1}uU|UexRbk$kEV@SUce!uKoMLVUliJ-tHop@v@yFunb{ zT%0|kYbg_bLcLI>e8FGLP$eoIiVW5Y_^pmF!JhVcdUiOgzBiU)eypZIL zpk_Q0)TuQH_$QLHX{8NIa4Z{*ucE>%JkA#i0y7#7ogq`Ff303jsMhF3ID^J@mCTk< zUtcd&3*+M)EFW!77(HMXN=k&XGLg&~i*VsJVU2vtcpivz!&-g7b67$@rDUQzFRirJ zz};^u=YpIuwUG}^4w9MGM*>+nKYr8%t9ezwJ|vS8ynR`(Uq|oD?(A!zvb}{bA2H&?Dq@X1yQ~x z7_{W?8*+?_lc+02*y!1McuIb@-*L)?S52$>}-=`F-8GEcB2-uxRv3*pJo! zNz=y+V*1=zH`ZQ-e~g0z!H{s@1(iTSwwe_pGt4+R_u#0yl*49jLX}t|p~^9=h0&;z zm50L%LvC{xgAn#wgm4g_ArGtYc#4#PjZE%-A4K|TAz*Ky(`LZ7K!2i$Yi7tJe>1L- zKWqxK>g#A}<#e}kCsHu#(}wv%2j0b@4TlmR%I~$fz{a>|5rz;eFH`moBV>!fsyiX2 zb_G>6+1a`e9lq3BYPm=0+V9y!FmWW^lBH)c+F7!a+b%NHZ?$jaJ)=6F8uD5D*DIp_ znKt=qPmPwZBk#0l6PK$jOR>V*3{NJviF-=Y9$qW|!1Zq+uXUI*;wBW_R&u4|X0j9t zu_i+5yK~8%<15KOJ8x>3Ika6sKI__GWP>;uHi!|fd2chvVNJks*QTN}qbJ8f5C;+d zXrQif&=7t1ZKCa|AiI0k?^>GHC^|*h6k)eS+Z^`D$e=HbyT?R~wIT`k6e+ypz1A0q z<$<}6E)~g7dmNc890elwph3n0`HP-h$QT$7cq6`Gpv*fQ8siyh+GjqNxZ$>#DMW#0 zY`EIJ(RzR7V_S{}@fObNr{Bj2hd4MtQ_u;L14AI6@2eu^ZX>B`Fpz>?BRSx%BQLuv z$#2{_^hZuerWZCs2HEqAl_YI{9=UWQlRmK?QpkaAtB%D`FN1lxg1;}siFg;`vQXGx zzvPd|AMIbssQpQ=z^QGIvq{c7Fp;FG+W$t2{A%AFb4GEWv+;v>`db6`a`RJG~)E!af~6lHyZ%F3B&Q7}n)u<+7-wl!_(7H-M)b z9&hERs zmmQ(*-b(&cp|&Vemkr+J!O`v=uqrDSR)fdyI~bDoMtuG-1~#v;L%Jq*w$mI3R3zcz zT@IMWB*$(|8_23i3K_bnr{)@9-6?j3D&rsip4Zg?1Dt zTfvFqh964F!j0rJZIFyZzQt?X;EX!W5WlOx(Di)t{JSnN)TJg~+v)X_uti{{8u{S# z=zC_Biaq)Kf**U;d8l;~Dui#8aZG{B?I+0GbH()RB&_6BMK4T3Zqlz#tYr#J0;{&h;hSF^4y#n`$xE>M!?(HS$P^fh6032kW`_+_^zt;UW+iGA z5~;ORnKaScQ()GxywJjF$W?#-Fwmz=+F!};OPGW=7j+) diff --git a/src/calibre/db/backend.py b/src/calibre/db/backend.py index fd83e3aaf6..69c8de6693 100644 --- a/src/calibre/db/backend.py +++ b/src/calibre/db/backend.py @@ -11,6 +11,7 @@ __docformat__ = 'restructuredtext en' import os, shutil, uuid, json, glob, time, hashlib, errno, sys from functools import partial +import six import apsw from calibre import isbytestring, force_unicode, prints, as_unicode @@ -1626,7 +1627,7 @@ class DB(object): except EnvironmentError as err: if err.errno == errno.EEXIST: # Parent directory already exists, re-raise original exception - raise exc_info[0], exc_info[1], exc_info[2] + six.reraise(*exc_info) raise finally: del exc_info diff --git a/src/calibre/ebooks/readability/readability.py b/src/calibre/ebooks/readability/readability.py index 537cc48085..f337046988 100644 --- a/src/calibre/ebooks/readability/readability.py +++ b/src/calibre/ebooks/readability/readability.py @@ -6,6 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import, import re, sys from collections import defaultdict +import six from lxml.etree import tostring from lxml.html import (fragment_fromstring, document_fromstring, tostring as htostring) @@ -156,7 +157,7 @@ class Document: return cleaned_article except StandardError as e: self.log.exception('error getting summary: ') - raise Unparseable(str(e)), None, sys.exc_info()[2] + six.reraise(Unparseable, Unparseable(str(e)), sys.exc_info()[2]) def get_article(self, candidates, best_candidate): # Now that we have the top candidate, look through its siblings for content that might also be related. diff --git a/src/calibre/gui2/icon_theme.py b/src/calibre/gui2/icon_theme.py index 7083df3901..0144a242ae 100644 --- a/src/calibre/gui2/icon_theme.py +++ b/src/calibre/gui2/icon_theme.py @@ -14,6 +14,7 @@ from Queue import Queue, Empty from threading import Thread, Event from multiprocessing.pool import ThreadPool +import six from PyQt5.Qt import ( QImageReader, QFormLayout, QVBoxLayout, QSplitter, QGroupBox, QListWidget, QLineEdit, QSpinBox, QTextEdit, QSize, QListWidgetItem, QIcon, QImage, @@ -368,7 +369,7 @@ def create_themeball(report, progress=None, abort=None): return if errors: e = errors[0] - raise e[0], e[1], e[2] + six.reraise(*e) if progress is not None: progress(next(num), _('Creating theme file')) diff --git a/src/calibre/gui2/linux_file_dialogs.py b/src/calibre/gui2/linux_file_dialogs.py index 656c4c10f1..ca2352df20 100644 --- a/src/calibre/gui2/linux_file_dialogs.py +++ b/src/calibre/gui2/linux_file_dialogs.py @@ -11,6 +11,7 @@ import sys import time from threading import Thread +import six from PyQt5.Qt import QEventLoop from calibre import force_unicode @@ -314,7 +315,7 @@ def linux_native_dialog(name): t.start() loop.exec_(QEventLoop.ExcludeUserInputEvents) if ret[1] is not None: - raise ret[1][0], ret[1][1], ret[1][2] + six.reraise(*ret[1]) return ret[0] except Exception: linux_native_dialog.native_failed = True diff --git a/src/calibre/srv/http_response.py b/src/calibre/srv/http_response.py index 2c244524d8..a7adb5e921 100644 --- a/src/calibre/srv/http_response.py +++ b/src/calibre/srv/http_response.py @@ -14,6 +14,8 @@ from operator import itemgetter from functools import wraps from future_builtins import map +import six + from calibre import guess_type, force_unicode from calibre.constants import __version__, plugins from calibre.srv.loop import WRITE @@ -478,7 +480,7 @@ class HTTPConnection(HTTPRequest): if e.log: self.log.warn(e.log) return self.simple_response(e.http_code, msg=e.message or '', close_after_response=e.close_connection, extra_headers=eh) - raise etype, e, tb + six.reraise(etype, e, tb) data, output = result output = self.finalize_output(output, data, self.method is HTTP1) diff --git a/src/calibre/utils/shared_file.py b/src/calibre/utils/shared_file.py index f089c9c612..73c74816a3 100644 --- a/src/calibre/utils/shared_file.py +++ b/src/calibre/utils/shared_file.py @@ -7,6 +7,9 @@ __license__ = 'GPL v3' __copyright__ = '2015, Kovid Goyal ' import os, sys + +import six + from calibre.constants import iswindows, plugins ''' @@ -119,7 +122,11 @@ if iswindows: } def raise_winerror(pywinerr): - raise WindowsError(pywinerr.winerror, (pywinerr.funcname or '') + b': ' + (pywinerr.strerror or '')), None, sys.exc_info()[2] + six.reraise( + WindowsError, + WindowsError(pywinerr.winerror, + (pywinerr.funcname or '') + b': ' + (pywinerr.strerror or '')), + sys.exc_info()[2]) def os_open(path, flags, mode=0o777, share_flags=FILE_SHARE_VALID_FLAGS): ''' @@ -173,7 +180,7 @@ else: return speedup.fdopen(os.open(path, flags), path, mode, buffering) def raise_winerror(x): - raise NotImplementedError(), None, sys.exc_info()[2] + six.reraise(NotImplementedError, None, sys.exc_info()[2]) def find_tests(): diff --git a/src/duktape/__init__.py b/src/duktape/__init__.py index bb314ca60c..e5032d7f42 100644 --- a/src/duktape/__init__.py +++ b/src/duktape/__init__.py @@ -12,6 +12,7 @@ __all__ = ['dukpy', 'Context', 'undefined', 'JSError', 'to_python'] import errno, os, sys, numbers, hashlib, json from functools import partial +import six import dukpy from calibre.constants import iswindows @@ -157,7 +158,7 @@ class Function(object): self.reraise(e) def reraise(self, e): - raise JSError(e), None, sys.exc_info()[2] + six.reraise(JSError, JSError(e), sys.exc_info()[2]) def to_python(x): try: @@ -332,7 +333,7 @@ class Context(object): '') def reraise(self, e): - raise JSError(e), None, sys.exc_info()[2] + six.reraise(JSError, JSError(e), sys.exc_info()[2]) def eval(self, code='', fname='', noreturn=False): try: