New submission from Chris Adams: This is a more general version of #10496: os.path.expanduser is documented as returning the unmodified string if it cannot be expanded (http://docs.python.org/3/library/os.path.html#os.path.expanduser) but there's one edge case where this can fail: when running without HOME in the environment:
https://github.com/python/cpython/blob/3.3/Lib/posixpath.py#L259-L263 In this case, pwd.getpwuid is called and although it's not documented as such, it raises a KeyError anytime the underlying POSIX getpwuid() call fails: https://github.com/python/cpython/blob/3.3/Modules/pwdmodule.c#L119-L120 Reproducing this deliberately: cadams@Io:~ $ sudo -H python Python 2.7.5 (default, Aug 25 2013, 00:04:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> import posix >>> posix.setuid(1001) >>> posix.seteuid(1001) >>> os.environ.pop('HOME') '/var/root' >>> os.path.expanduser("~") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 269, in expanduser userhome = pwd.getpwuid(os.getuid()).pw_dir KeyError: 'getpwuid(): uid not found: 1001' Context: * https://github.com/toastdriven/django-haystack/issues/924 * https://github.com/kennethreitz/requests/issues/1846. ---------- components: Library (Lib) messages: 207552 nosy: acdha priority: normal severity: normal status: open title: Undocumented KeyError from os.path.expanduser versions: Python 2.7, Python 3.3 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20164> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com