From 03a801eecc347ea6d07e85afc78968c809142130 Mon Sep 17 00:00:00 2001 From: I-Al-Istannen Date: Tue, 12 May 2020 21:02:41 +0200 Subject: [PATCH] Correctly type hint swallow_and_print_errors decorator --- PFERD/errors.py | 9 ++++++--- example_config.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/PFERD/errors.py b/PFERD/errors.py index 014479d..d003314 100644 --- a/PFERD/errors.py +++ b/PFERD/errors.py @@ -3,7 +3,7 @@ An error logging decorator. """ import logging -from typing import Any, Callable +from typing import Any, Callable, TypeVar, cast from rich.console import Console @@ -19,7 +19,10 @@ class FatalException(Exception): """ -def swallow_and_print_errors(function: Callable) -> Callable: +TFun = TypeVar('TFun', bound=Callable[..., Any]) + + +def swallow_and_print_errors(function: TFun) -> TFun: """ Decorates a function, swallows all errors, logs them and returns none if one occurred. """ @@ -33,4 +36,4 @@ def swallow_and_print_errors(function: Callable) -> Callable: except Exception as error: Console().print_exception() return None - return inner + return cast(TFun, inner) diff --git a/example_config.py b/example_config.py index 5da95de..6b1c5d3 100644 --- a/example_config.py +++ b/example_config.py @@ -2,6 +2,7 @@ import argparse from pathlib import Path, PurePath from PFERD import Pferd +from PFERD.ilias import IliasDirectoryType from PFERD.transform import (attempt, do, glob, keep, move, move_dir, optionally, re_move, re_rename) @@ -48,7 +49,7 @@ tf_ss_2020_pg = attempt( ) -def df_ss_2020_or1(path: PurePath) -> bool: +def df_ss_2020_or1(path: PurePath, _type: IliasDirectoryType) -> bool: if glob("Tutorien/")(path): return True if glob("Tutorien/Tutorium 10, dienstags 15:45 Uhr/")(path):