mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-26 18:11:30 +00:00
[utils] Make ExtractorError
mutable
This commit is contained in:
parent
71eb82d1b2
commit
9bcfe33be7
|
@ -692,16 +692,10 @@ def extract(self, url):
|
||||||
except UnsupportedError:
|
except UnsupportedError:
|
||||||
raise
|
raise
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
kwargs = {
|
e.video_id = e.video_id or self.get_temp_id(url),
|
||||||
'video_id': e.video_id or self.get_temp_id(url),
|
e.ie = e.ie or self.IE_NAME,
|
||||||
'ie': self.IE_NAME,
|
e.traceback = e.traceback or sys.exc_info()[2]
|
||||||
'tb': e.traceback or sys.exc_info()[2],
|
raise
|
||||||
'expected': e.expected,
|
|
||||||
'cause': e.cause
|
|
||||||
}
|
|
||||||
if hasattr(e, 'countries'):
|
|
||||||
kwargs['countries'] = e.countries
|
|
||||||
raise type(e)(e.orig_msg, **kwargs)
|
|
||||||
except http.client.IncompleteRead as e:
|
except http.client.IncompleteRead as e:
|
||||||
raise ExtractorError('A network error has occurred.', cause=e, expected=True, video_id=self.get_temp_id(url))
|
raise ExtractorError('A network error has occurred.', cause=e, expected=True, video_id=self.get_temp_id(url))
|
||||||
except (KeyError, StopIteration) as e:
|
except (KeyError, StopIteration) as e:
|
||||||
|
|
|
@ -1095,13 +1095,16 @@ def __init__(self, msg, tb=None, expected=False, cause=None, video_id=None, ie=N
|
||||||
self.exc_info = sys.exc_info() # preserve original exception
|
self.exc_info = sys.exc_info() # preserve original exception
|
||||||
if isinstance(self.exc_info[1], ExtractorError):
|
if isinstance(self.exc_info[1], ExtractorError):
|
||||||
self.exc_info = self.exc_info[1].exc_info
|
self.exc_info = self.exc_info[1].exc_info
|
||||||
|
super().__init__(self.__msg)
|
||||||
|
|
||||||
super().__init__(''.join((
|
@property
|
||||||
format_field(ie, None, '[%s] '),
|
def __msg(self):
|
||||||
format_field(video_id, None, '%s: '),
|
return ''.join((
|
||||||
msg,
|
format_field(self.ie, None, '[%s] '),
|
||||||
format_field(cause, None, ' (caused by %r)'),
|
format_field(self.video_id, None, '%s: '),
|
||||||
'' if expected else bug_reports_message())))
|
self.orig_msg,
|
||||||
|
format_field(self.cause, None, ' (caused by %r)'),
|
||||||
|
'' if self.expected else bug_reports_message()))
|
||||||
|
|
||||||
def format_traceback(self):
|
def format_traceback(self):
|
||||||
return join_nonempty(
|
return join_nonempty(
|
||||||
|
@ -1109,6 +1112,12 @@ def format_traceback(self):
|
||||||
self.cause and ''.join(traceback.format_exception(None, self.cause, self.cause.__traceback__)[1:]),
|
self.cause and ''.join(traceback.format_exception(None, self.cause, self.cause.__traceback__)[1:]),
|
||||||
delim='\n') or None
|
delim='\n') or None
|
||||||
|
|
||||||
|
def __setattr__(self, name, value):
|
||||||
|
super().__setattr__(name, value)
|
||||||
|
if getattr(self, 'msg', None) and name not in ('msg', 'args'):
|
||||||
|
self.msg = self.__msg or type(self).__name__
|
||||||
|
self.args = (self.msg, ) # Cannot be property
|
||||||
|
|
||||||
|
|
||||||
class UnsupportedError(ExtractorError):
|
class UnsupportedError(ExtractorError):
|
||||||
def __init__(self, url):
|
def __init__(self, url):
|
||||||
|
|
Loading…
Reference in a new issue