2018-07-12 07:27:48 +12:00
|
|
|
import sys
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-12 07:27:48 +12:00
|
|
|
def full_exc_info(exc_info):
|
2020-06-02 00:05:02 +12:00
|
|
|
|
|
|
|
def current_stack(skip=0):
|
2021-02-25 22:32:06 +13:00
|
|
|
try:
|
|
|
|
1 / 0
|
2020-06-02 00:05:02 +12:00
|
|
|
except ZeroDivisionError:
|
|
|
|
f = sys.exc_info()[2].tb_frame
|
|
|
|
for i in range(skip + 2):
|
|
|
|
f = f.f_back
|
|
|
|
lst = []
|
|
|
|
while f is not None:
|
|
|
|
lst.append((f, f.f_lineno))
|
|
|
|
f = f.f_back
|
|
|
|
return lst
|
|
|
|
|
|
|
|
def extend_traceback(tb, stack):
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
class FauxTb():
|
2020-06-02 00:05:02 +12:00
|
|
|
def __init__(self, tb_frame, tb_lineno, tb_next):
|
|
|
|
self.tb_frame = tb_frame
|
|
|
|
self.tb_lineno = tb_lineno
|
|
|
|
self.tb_next = tb_next
|
|
|
|
|
|
|
|
"""Extend traceback with stack info."""
|
|
|
|
head = tb
|
|
|
|
for tb_frame, tb_lineno in stack:
|
|
|
|
head = FauxTb(tb_frame, tb_lineno, head)
|
|
|
|
return head
|
|
|
|
|
2018-07-12 07:27:48 +12:00
|
|
|
"""Like sys.exc_info, but includes the full traceback."""
|
|
|
|
t, v, tb = exc_info
|
|
|
|
full_tb = extend_traceback(tb, current_stack(1))
|
|
|
|
return t, v, full_tb
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class RedditLoginFailed(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class ImgurLoginError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class FileAlreadyExistsError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class NotADownloadableLinkError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class AlbumNotDownloadedCompletely(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class FileNameTooLong(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class InvalidRedditLink(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-12 04:57:38 +12:00
|
|
|
class ProgramModeError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-12 04:57:38 +12:00
|
|
|
class SearchModeError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-12 04:57:38 +12:00
|
|
|
class RedditorNameError(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class NoMatchingSubmissionFound(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class NoPrawSupport(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-08-09 09:17:04 +12:00
|
|
|
class NoRedditSupport(Exception):
|
2018-07-10 07:58:11 +12:00
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class MultiredditNotFound(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class InsufficientPermission(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-10 07:58:11 +12:00
|
|
|
class InvalidSortingType(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
|
|
|
|
2018-07-24 07:06:33 +12:00
|
|
|
class NoSuitablePost(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2018-07-24 07:06:33 +12:00
|
|
|
class ImgurLimitError(Exception):
|
2020-06-02 00:05:02 +12:00
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
class DirectLinkNotFound(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
class InvalidJSONFile(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
class FailedToDownload(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-04 03:10:25 +12:00
|
|
|
class TypeInSkip(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-02 00:05:02 +12:00
|
|
|
class DomainInSkip(Exception):
|
2020-06-04 03:10:25 +12:00
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-04 03:10:25 +12:00
|
|
|
class ImageNotFound(Exception):
|
|
|
|
pass
|
|
|
|
|
2021-02-25 22:32:06 +13:00
|
|
|
|
2020-06-04 03:10:25 +12:00
|
|
|
class ExtensionError(Exception):
|
2021-02-25 22:32:06 +13:00
|
|
|
pass
|