Description
Bug report
In new tests added for #117562 I noticed that os.path.realpath('file1/file2', strict=os.path.ALLOW_MISSING)
returns 'file1/file2'
when file file1
exist on Windows.
On Posix you will get NotADirectoryError here, but Windows raises ALLOW_MISSING if the intermediate path is a file instead of directory, and it will be ignored with ALLOW_MISSING.
It is expected that if realpath(..., strict=ALLOW_MISSING)
does not fail, you can simply create intermediate directories or the final file/directory. At least on Posix. But on Windows it will always fail, because there is already a file here.
cc @encukou
Activity
[-]realpath(..., strict=ALLOW_MISSING) can unexpectedly success on Windows[/-][+]realpath(..., strict=ALLOW_MISSING) can unexpectedly succeed on Windows[/+]encukou commentedon Jun 4, 2025
Thanks for the catch! I'd call that a bug (but not a security issue).
serhiy-storchaka commentedon Jun 4, 2025
At least, such "gotcha" could be documented. I don't know whether we can detect and change this behavior, or leave it as a Windows peculiarity.