New submission from John Love-Jensen <[EMAIL PROTECTED]>: I found a bug (or at least a shortcoming) in Python's os.path.normpath routine.
It overly normalizes, at least for Unix and Unix-like systems (including Mac), and Windows. Example: x = os.path.join(".", "dog", "..", "cupcake.txt") print x x = os.path.normpath(x) print x If say "dog" is a symlink (any flavor of Unix (including OS X), or Win), there is a difference between ./dog/../cupcake.txt and ./cupcake.txt. In the OS, if dog is a symlink to fire/fly, the .. resolves relative to fire/fly. It should be safe to normalize this: ././././././././cupcake.txt --> ./cupcake.txt It should be safe to normalize this: .////////////////cupcake.txt --> ./cupcake.txt But this is not safe to normalize: ./x/../x/../x/../cupcake.txt --> ./cupcake.txt For example, if the directories look like this: ./cupcake.txt ./over/yonder/back/cupcake.txt ./x --> over/there ./over/there ./over/x --> yonder/aways ./over/yonder/aways ./over/yonder/x --> back/again ./over/yonder/back/again ./cupcake.txt refers to first cupcake. ./x/../x/../x/../cupcake.txt refers to the second cupcake. The os.path.realpath does the resolve, but sometimes the path-in-hand is for some arbitrary path, and not necessarily one on the local system, or if on the local files system may be relative based off from a different cwd. ---------- messages: 63533 nosy: eljay451 severity: minor status: open title: os.path.normpath over-normalizes type: behavior versions: Python 2.4 __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue2289> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com