classification
Title: os.path.islink() works with cygwin installation but not python.org
Type: behavior Stage:
Components: Versions: Python 2.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: bward, pmpp
Priority: normal Keywords:

Created on 2018-12-14 21:16 by bward, last changed 2018-12-14 21:27 by pmpp.

Messages (2)
msg331871 - (view) Author: Benjamin Ward (bward) Date: 2018-12-14 21:16
I have python.org's Python27 installed on my laptop.  In my Documnets/tmp folder/directory I created three "directories" (see below) and performed os.path.islink() on all three.

in cmd window: (not dir output and prompt have be been shortened)

*\Documents\tmp>dir
 Volume in drive C is OS
 Volume Serial Number is B2BB-F7DA

 Directory of *\Documents\tmp
...
12/14/2018  12:37 PM    <DIR>          isDir
12/14/2018  12:37 PM    <JUNCTION>     isDirJunction [C:\Users\benjward\Documents\tmp\isDir]
12/14/2018  12:39 PM    <SYMLINKD>     isDirSymbolicLink [isDir]
...

*** using system installed python.org python 2.7
*\Documents\tmp>where python
C:\Python27\python.exe

python
Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.islink('isDir')
False
>>> os.path.islink('isDirJunction')
False
>>> os.path.islink('isDirSymlink')
False
>>>

*** but ..., using cygwin64 installation of python 2.7
*\Documents\tmp>C:\cygwin64\bin\python2.7
Python 2.7.14 (default, Oct 31 2017, 21:12:13)
[GCC 6.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.islink('isDir')
False
>>> os.path.islink('isDirJunction')
True
>>> os.path.islink('isDirSymlink')
True
>>>

The latter result is what I was expecting.  Granted, my cygwin python is 2.7.14 and system installation is 2.7.15, but is it likely that a capability was lost?
msg331872 - (view) Author: pmpp (pmpp) * Date: 2018-12-14 21:27
afaik only cygwin and msys2 python flavours can handle *various* links and junctions. ( usefull tool http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html )

and testing symlinks is may be disabled in MSVCRT paths https://github.com/python/cpython/pull/10245/files#diff-2b0d47b7b6809ae1bd1d7fd0c4e36e00R246 as some comment suggest.
History
Date User Action Args
2018-12-14 21:27:50pmppsetnosy: + pmpp
messages: + msg331872
2018-12-14 21:16:22bwardcreate