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
| from __future__ import annotations
|
| import shutil
| import sys
| from typing import TYPE_CHECKING, Any, Callable
|
| if TYPE_CHECKING:
| from _typeshed import ExcInfo, StrOrBytesPath
| from typing_extensions import TypeAlias
|
| # Same as shutil._OnExcCallback from typeshed
| _OnExcCallback: TypeAlias = Callable[[Callable[..., Any], str, BaseException], object]
|
|
| def shutil_rmtree(
| path: StrOrBytesPath,
| ignore_errors: bool = False,
| onexc: _OnExcCallback | None = None,
| ) -> None:
| if sys.version_info >= (3, 12):
| return shutil.rmtree(path, ignore_errors, onexc=onexc)
|
| def _handler(fn: Callable[..., Any], path: str, excinfo: ExcInfo) -> None:
| if onexc:
| onexc(fn, path, excinfo[1])
|
| return shutil.rmtree(path, ignore_errors, onerror=_handler)
|
|