expanduser('~other') reliability and future

There’s been a bit of discussion on the reliability of getting other users' home directories via os.path.expanduser(), mostly on issue42998 https://bugs.python.org/issue42998.
In msg390503 https://bugs.python.org/issue42998#msg390503, Serhiy Storchaka pointed out that ntpath only makes an educated guess of other user’s home directories.
In msg390535 https://bugs.python.org/issue42998#msg390535, Eryk Sun supplied an improved ntpath implementation that makes use of winreg and ctypes.
In msg391970 https://bugs.python.org/issue42998#msg391970, Steve Dower pointed out that, if retrieving another user’s home directory on Windows is unlikely to be made reliable, we should look at deprecating this functionality in expanduser()
From a bit of googling, Python seems to be an outlier in having a function to retrieve another user’s home directory. I am encouraged by Eryk’s patch, but a little out of my depth with Windows stuff.
Any views on this? Is expanduser(‘~other’) fixable and worth fixing? If not, should we deprecate this functionality? Or something else?
Barney

On Wed, Apr 28, 2021 at 05:44:06PM +0100, Barney Gale wrote:
From a bit of googling, Python seems to be an outlier in having a function to retrieve another user’s home directory.
Any views on this? Is expanduser(‘~other’) fixable and worth fixing? If not, should we deprecate this functionality? Or something else?
+1 to deprecate this functionality. This does not seem to be common usecase to be present in stdlib, and reliablity across platform seems difficult.
-- Senthil

On UNIX-oid platforms (e.g. BSD, Linux, Mac), ~user/ should be reasonably reliable, after all the shell does it. On Windows, only ~/ can be relied upon -- the rest is "best effort". I'd be okay with deprecating ~user/ on Windows, but on UNIX-oid it should not be deprecated IMO.
(Spoken as an old UNIX nerd who's currently using Windows 10.)
On Wed, Apr 28, 2021 at 9:57 AM Senthil Kumaran senthil@uthcode.com wrote:
On Wed, Apr 28, 2021 at 05:44:06PM +0100, Barney Gale wrote:
From a bit of googling, Python seems to be an outlier in having a
function to
retrieve another user’s home directory.
Any views on this? Is expanduser(‘~other’) fixable and worth fixing? If
not,
should we deprecate this functionality? Or something else?
+1 to deprecate this functionality. This does not seem to be common usecase to be present in stdlib, and reliablity across platform seems difficult.
-- Senthil
Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-leave@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/CGVRT4A7... Code of Conduct: http://python.org/psf/codeofconduct/

On Wed, 28 Apr 2021 10:05:32 -0700 Guido van Rossum guido@python.org wrote:
On UNIX-oid platforms (e.g. BSD, Linux, Mac), ~user/ should be reasonably reliable, after all the shell does it. On Windows, only ~/ can be relied upon -- the rest is "best effort". I'd be okay with deprecating ~user/ on Windows, but on UNIX-oid it should not be deprecated IMO.
(Spoken as an old UNIX nerd who's currently using Windows 10.)
Agreed with Guido.
Best regards
Antoine.
On Wed, Apr 28, 2021 at 9:57 AM Senthil Kumaran senthil@uthcode.com wrote:
On Wed, Apr 28, 2021 at 05:44:06PM +0100, Barney Gale wrote:
From a bit of googling, Python seems to be an outlier in having a
function to
retrieve another user’s home directory.
Any views on this? Is expanduser(‘~other’) fixable and worth fixing? If
not,
should we deprecate this functionality? Or something else?
+1 to deprecate this functionality. This does not seem to be common usecase to be present in stdlib, and reliablity across platform seems difficult.
-- Senthil
Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-leave@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/CGVRT4A7... Code of Conduct: http://python.org/psf/codeofconduct/

On 4/28/2021 1:05 PM, Guido van Rossum wrote:
On UNIX-oid platforms (e.g. BSD, Linux, Mac), ~user/ should be reasonably reliable, after all the shell does it. On Windows, only ~/ can be relied upon -- the rest is "best effort". I'd be okay with deprecating ~user/ on Windows, but on UNIX-oid it should not be deprecated IMO.
On all systems, IDLE uses expanduser('~') and expanduser(path). On Mac, it uses expanduser('~/Library/Preferences/.GlobalPreferences.plist'). So I presume deprecating ~something only on Windows should not affect IDLE.
-- Terry Jan Reedy
participants (5)
-
Antoine Pitrou
-
Barney Gale
-
Guido van Rossum
-
Senthil Kumaran
-
Terry Reedy