mirror of
https://github.com/Garmelon/PFERD.git
synced 2023-12-21 10:23:01 +01:00
Swallow and print errors instead of crashing
This commit is contained in:
parent
a4c518bf4c
commit
afa48c2d2d
28
PFERD/errors.py
Normal file
28
PFERD/errors.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"""
|
||||||
|
An error logging decorator.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from typing import Any, Callable
|
||||||
|
|
||||||
|
from .logging import FatalException, PrettyLogger
|
||||||
|
|
||||||
|
LOGGER = logging.getLogger(__name__)
|
||||||
|
PRETTY = PrettyLogger(LOGGER)
|
||||||
|
|
||||||
|
|
||||||
|
def swallow_and_print_errors(function: Callable) -> Callable:
|
||||||
|
"""
|
||||||
|
Decorates a function, swallows all errors, logs them and returns none if one occurred.
|
||||||
|
"""
|
||||||
|
def inner(*args: Any, **kwargs: Any) -> Any:
|
||||||
|
# pylint: disable=broad-except
|
||||||
|
try:
|
||||||
|
return function(*args, **kwargs)
|
||||||
|
except FatalException as error:
|
||||||
|
PRETTY.error(str(error))
|
||||||
|
return None
|
||||||
|
except Exception as error:
|
||||||
|
Console().print_exception()
|
||||||
|
return None
|
||||||
|
return inner
|
@ -9,6 +9,7 @@ from typing import List, Optional, Union
|
|||||||
from .cookie_jar import CookieJar
|
from .cookie_jar import CookieJar
|
||||||
from .diva import (DivaDownloader, DivaDownloadStrategy, DivaPlaylistCrawler,
|
from .diva import (DivaDownloader, DivaDownloadStrategy, DivaPlaylistCrawler,
|
||||||
diva_download_new)
|
diva_download_new)
|
||||||
|
from .errors import swallow_and_print_errors
|
||||||
from .ilias import (IliasAuthenticator, IliasCrawler, IliasDirectoryFilter,
|
from .ilias import (IliasAuthenticator, IliasCrawler, IliasDirectoryFilter,
|
||||||
IliasDownloader, IliasDownloadStrategy,
|
IliasDownloader, IliasDownloadStrategy,
|
||||||
KitShibbolethAuthenticator, download_modified_or_new)
|
KitShibbolethAuthenticator, download_modified_or_new)
|
||||||
@ -89,6 +90,7 @@ class Pferd(Location):
|
|||||||
|
|
||||||
return organizer
|
return organizer
|
||||||
|
|
||||||
|
@swallow_and_print_errors
|
||||||
def ilias_kit(
|
def ilias_kit(
|
||||||
self,
|
self,
|
||||||
target: PathLike,
|
target: PathLike,
|
||||||
@ -141,6 +143,7 @@ class Pferd(Location):
|
|||||||
clean=clean,
|
clean=clean,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@swallow_and_print_errors
|
||||||
def diva_kit(
|
def diva_kit(
|
||||||
self,
|
self,
|
||||||
target: Union[PathLike, Organizer],
|
target: Union[PathLike, Organizer],
|
||||||
|
Loading…
Reference in New Issue
Block a user