From 51ef94439c0b3c6b3c1804796bf6a4372a0160fe Mon Sep 17 00:00:00 2001 From: Jeremy Hiatt Date: Tue, 27 Feb 2024 20:31:00 -0800 Subject: [PATCH] Avoid modifying path placeholders created by editable installs The setuptools implementation of editable installs will insert a placeholder entry into sys.path as part of its magic to register its custom import mechanism. These are not real filesystem paths and as such should not be rewritten to absolute paths. --- changelog/1028.bugfix | 1 + src/xdist/looponfail.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 changelog/1028.bugfix diff --git a/changelog/1028.bugfix b/changelog/1028.bugfix new file mode 100644 index 0000000..39bc7a9 --- /dev/null +++ b/changelog/1028.bugfix @@ -0,0 +1 @@ +Fix compatiblity issue between `looponfail` and editable installs. diff --git a/src/xdist/looponfail.py b/src/xdist/looponfail.py index 7ef24c1..370cb8b 100644 --- a/src/xdist/looponfail.py +++ b/src/xdist/looponfail.py @@ -160,7 +160,8 @@ def init_worker_session(channel, args, option_dict): newpaths = [] for p in sys.path: if p: - if not os.path.isabs(p): + # Ignore path placeholders created for editable installs + if not os.path.isabs(p) and not p.endswith(".__path_hook__"): p = os.path.abspath(p) newpaths.append(p) sys.path[:] = newpaths