mypy: Remove need for cast by using ConcreteQueueWorker TypeVar.

This commit is contained in:
neiljp (Neil Pilgrim)
2018-03-10 18:57:20 +00:00
committed by Tim Abbott
parent cb8d574648
commit e322c2161c

View File

@@ -101,14 +101,11 @@ def check_and_send_restart_signal() -> None:
pass pass
def retry_send_email_failures( def retry_send_email_failures(
func: Callable[[Any, Dict[str, Any]], None] func: Callable[[ConcreteQueueWorker, Dict[str, Any]], None]
) -> Callable[['QueueProcessingWorker', Dict[str, Any]], None]: ) -> Callable[['QueueProcessingWorker', Dict[str, Any]], None]:
# If we don't use cast() and use QueueProcessingWorker instead of Any in
# function type annotation then mypy complains.
func = cast(Callable[[QueueProcessingWorker, Dict[str, Any]], None], func)
@wraps(func) @wraps(func)
def wrapper(worker: 'QueueProcessingWorker', data: Dict[str, Any]) -> None: def wrapper(worker: ConcreteQueueWorker, data: Dict[str, Any]) -> None:
try: try:
func(worker, data) func(worker, data)
except (smtplib.SMTPServerDisconnected, socket.gaierror, EmailNotDeliveredException): except (smtplib.SMTPServerDisconnected, socket.gaierror, EmailNotDeliveredException):