Skip to content

Commit c142379

Browse files
author
yunjinqi
committed
fix: traceback.format_exception Python 3.8-3.9 compatibility
1 parent 404d599 commit c142379

9 files changed

Lines changed: 20 additions & 20 deletions

File tree

backtrader/cerebro.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1977,7 +1977,7 @@ def _runnext(self, runstrats):
19771977
if self._event_stop: # stop if requested
19781978
return
19791979
except Exception as e:
1980-
_error_info = traceback.format_exception(e)
1980+
_error_info = traceback.format_exception(type(e), e, e.__traceback__)
19811981
# print(_error_info) # Removed for performance - can be re-enabled for debugging
19821982

19831983
# runonce

backtrader/feeds/cryptofeed.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def _load_bar(self):
277277
# self.log(f"cannot get data")
278278
return None
279279
except Exception as e:
280-
error_info = traceback.format_exception(e)
280+
error_info = traceback.format_exception(type(e), e, e.__traceback__)
281281
self.log(f"error:{error_info}")
282282
return None
283283
data.init_data()

backtrader/plot/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
except Exception as e:
3232
# if another backend has already been loaded, an exception will be
3333
# generated and this can be skipped
34-
traceback.format_exception(e)
34+
traceback.format_exception(type(e), e, e.__traceback__)
3535
pass
3636

3737

backtrader/plot/locator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,14 +292,14 @@ def get_locator(self, dmin, dmax):
292292
locator.set_view_interval(*self.axis.get_view_interval())
293293
locator.set_data_interval(*self.axis.get_data_interval())
294294
except Exception as e:
295-
traceback.format_exception(e)
295+
traceback.format_exception(type(e), e, e.__traceback__)
296296
try:
297297
# try for matplotlib >= 3.6.0
298298
self.axis.set_view_interval(*self.axis.get_view_interval())
299299
self.axis.set_data_interval(*self.axis.get_data_interval())
300300
locator.set_axis(self.axis)
301301
except Exception as e:
302-
traceback.format_exception(e)
302+
traceback.format_exception(type(e), e, e.__traceback__)
303303
return locator
304304

305305

backtrader/plot/plot.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,7 @@ def get_rate_sharpe_drawdown(data):
19801980
"""
19811981
return sharpe_ratio, average_rate, max_drawdown
19821982
except Exception as e:
1983-
traceback.format_exception(e)
1983+
traceback.format_exception(type(e), e, e.__traceback__)
19841984
return np.nan, np.nan, np.nan
19851985

19861986

@@ -2152,7 +2152,7 @@ def run_cerebro_and_plot(
21522152
round(float(i), 4) for i in list(df03["Long/short trading indicator value"])
21532153
]
21542154
except Exception as e:
2155-
traceback.format_exception(e)
2155+
traceback.format_exception(type(e), e, e.__traceback__)
21562156
df00["Performance indicator"] = df01.index
21572157
df00["Performance indicator value"] = df01["Performance indicator value"]
21582158
df00["General trading indicator"] = df02.index
@@ -2279,7 +2279,7 @@ def run_cerebro_and_plot(
22792279
long_trade_len = trade_info["len"]["long"]["total"]
22802280
short_trade_len = trade_info["len"]["short"]["total"]
22812281
except Exception as e:
2282-
traceback.format_exception(e)
2282+
traceback.format_exception(type(e), e, e.__traceback__)
22832283
total_trade_num = np.nan
22842284
total_trade_opened = np.nan
22852285
total_trade_closed = np.nan
@@ -2301,7 +2301,7 @@ def run_cerebro_and_plot(
23012301
lost_average_pnl = trade_info["lost"]["pnl"]["average"]
23022302
lost_max_pnl = trade_info["lost"]["pnl"]["max"]
23032303
except Exception as e:
2304-
traceback.format_exception(e)
2304+
traceback.format_exception(type(e), e, e.__traceback__)
23052305
longest_win_num = np.nan
23062306
longest_lost_num = np.nan
23072307
net_total_pnl = np.nan
@@ -2355,7 +2355,7 @@ def run_cerebro_and_plot(
23552355
short_lost_total_pnl = trade_info["short"]["pnl"]["lost"]["total"]
23562356
short_lost_max_pnl = trade_info["short"]["pnl"]["lost"]["max"]
23572357
except Exception as e:
2358-
traceback.format_exception(e)
2358+
traceback.format_exception(type(e), e, e.__traceback__)
23592359
long_num = np.nan
23602360
long_win_num = np.nan
23612361
long_lost_num = np.nan
@@ -2417,7 +2417,7 @@ def run_cerebro_and_plot(
24172417
round(float(i), 4) for i in list(df03["Long/short trading indicator value"])
24182418
]
24192419
except Exception as e:
2420-
traceback.format_exception(e)
2420+
traceback.format_exception(type(e), e, e.__traceback__)
24212421
df00["Performance indicator"] = df01.index
24222422
df00["Performance indicator value"] = df01["Performance indicator value"]
24232423
df00["General trading indicator"] = df02.index

backtrader/stores/cryptostore.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ def update_stop_time(stop_time):
405405
if begin_time >= stop_time:
406406
break
407407
except Exception as e:
408-
error_info = traceback.format_exception(e)
408+
error_info = traceback.format_exception(type(e), e, e.__traceback__)
409409
self.log(f"download fail, retry: {error_info}")
410410
time.sleep(3) # Pause for 3 seconds before retry
411411

backtrader/stores/oandastore.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def request(self, endpoint, method="GET", params=None):
162162
try:
163163
response = func(url, **request_args)
164164
except requests.RequestException as e:
165-
traceback.format_exception(e)
165+
traceback.format_exception(type(e), e, e.__traceback__)
166166
return OandaRequestError().error_response
167167

168168
content = response.content.decode("utf-8")
@@ -236,7 +236,7 @@ def run(self, endpoint, params=None):
236236
try:
237237
response = self.client.get(url, **request_args)
238238
except requests.RequestException as e:
239-
traceback.format_exception(e)
239+
traceback.format_exception(type(e), e, e.__traceback__)
240240
self.q.put(OandaRequestError().error_response)
241241
break
242242

@@ -256,7 +256,7 @@ def run(self, endpoint, params=None):
256256
self.on_success(data)
257257

258258
except Exception as e: # socket.error has been seen
259-
traceback.format_exception(e)
259+
traceback.format_exception(type(e), e, e.__traceback__)
260260
self.q.put(OandaStreamError().error_response)
261261
break
262262

@@ -836,7 +836,7 @@ def _t_order_cancel(self):
836836
try:
837837
self.oapi.close_order(self.p.account, oid)
838838
except Exception as e:
839-
traceback.format_exception(e)
839+
traceback.format_exception(type(e), e, e.__traceback__)
840840
continue # not cancelled - FIXME: notify
841841

842842
self.broker._cancel(oref)

backtrader/stores/vchartfile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,14 @@ def _find_vchart():
6565
try:
6666
vckey = winreg.OpenKey(rkey, VC_KEYNAME)
6767
except OSError as e:
68-
traceback.format_exception(e)
68+
traceback.format_exception(type(e), e, e.__traceback__)
6969
continue
7070

7171
# Try to get the key value
7272
try:
7373
vcdir, _ = winreg.QueryValueEx(vckey, VC_KEYVAL)
7474
except OSError as e:
75-
traceback.format_exception(e)
75+
traceback.format_exception(type(e), e, e.__traceback__)
7676
continue
7777
else:
7878
break # found vcdir

backtrader/stores/vcstore.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,14 +307,14 @@ def find_vchart(self):
307307
try:
308308
vckey = _winreg.OpenKey(rkey, self.VC_KEYNAME)
309309
except OSError as e:
310-
traceback.format_exception(e)
310+
traceback.format_exception(type(e), e, e.__traceback__)
311311
continue
312312

313313
# Try to get the key value
314314
try:
315315
vcdir, _ = _winreg.QueryValueEx(vckey, self.VC_KEYVAL)
316316
except OSError as e:
317-
traceback.format_exception(e)
317+
traceback.format_exception(type(e), e, e.__traceback__)
318318
continue
319319
else:
320320
break # found vcdir

0 commit comments

Comments
 (0)