From 86fc829f4d62747262a18a86040fcab1651a224c Mon Sep 17 00:00:00 2001 From: helly25 Date: Thu, 25 Apr 2024 12:41:51 +0000 Subject: [PATCH] Need to also use an `Exception` parameter, not an `OSError` parameter. So we apply a cast for this to work. --- pre_commit/util.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pre_commit/util.py b/pre_commit/util.py index 3a02def4..7b785d18 100644 --- a/pre_commit/util.py +++ b/pre_commit/util.py @@ -12,6 +12,7 @@ from collections.abc import Generator from types import TracebackType from typing import Any from typing import Callable +from typing import cast from pre_commit import parse_shebang @@ -205,11 +206,11 @@ else: # pragma: no cover def _handle_readonly( func: Callable[[str], object], path: str, - exc: OSError, + exc: Exception, ) -> object: if ( - func in (os.rmdir, os.remove, os.unlink) and - exc.errno in {errno.EACCES, errno.EPERM} + func in (os.rmdir, os.remove, os.unlink) and exc is OSError and + cast(OSError, exc).errno in {errno.EACCES, errno.EPERM} ): for p in (path, os.path.dirname(path)): os.chmod(p, os.stat(p).st_mode | stat.S_IWUSR)