-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy pathexceptions.py
More file actions
47 lines (35 loc) · 1.2 KB
/
Copy pathexceptions.py
File metadata and controls
47 lines (35 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""
This module provides utility functions for raising and reraising exceptions.
Functions::
raise_exception(exception_class, *args, **kwargs):
Returns a function that raises an exception of the given type with
the given arguments.
reraise(*args, **kwargs):
Reraises the current exception.
"""
import collections.abc
import typing
def raise_exception(
exception_class: type[Exception],
*args: typing.Any,
**kwargs: typing.Any,
) -> collections.abc.Callable[..., None]:
"""
Returns a function that raises an exception of the given type with the
given arguments.
>>> raise_exception(ValueError, 'spam')('eggs')
Traceback (most recent call last):
...
ValueError: spam
"""
def raise_(*args_: typing.Any, **kwargs_: typing.Any) -> typing.Any:
"""Raise ``exception_class`` with the captured args."""
raise exception_class(*args, **kwargs)
return raise_
def reraise(*args: typing.Any, **kwargs: typing.Any) -> typing.Any:
"""
Reraises the current exception.
This function seems useless, but it can be useful when you need to pass
a callable to another function that raises an exception.
"""
raise