From 58e1f625ab78de77f79a77528a21ec83e6779c08 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 28 Oct 2021 11:51:52 +0200 Subject: [PATCH] Handle missing components in path canonicalization The trailing components are not guarantee to exist. Avoid doing a second stat, just ignore FileNotFoundError exceptions in _canon_subpath. --- pre_commit/main.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pre_commit/main.py b/pre_commit/main.py index c18c1a6a..34f16db8 100644 --- a/pre_commit/main.py +++ b/pre_commit/main.py @@ -159,8 +159,11 @@ def _add_run_options(parser: argparse.ArgumentParser) -> None: def _canon_subpath(path: str, toplevel: str) -> str: tail = '' while len(path): - if os.path.samefile(path, toplevel): - return os.path.join(toplevel, tail) + try: + if os.path.samefile(path, toplevel): + return os.path.join(toplevel, tail) + except FileNotFoundError: + pass path, base = os.path.split(path) tail = os.path.join(base, tail) return tail