| 123456789101112131415161718192021222324252627 |
- 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)
|