aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/getpass.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/getpass.py')
-rw-r--r--Lib/getpass.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/Lib/getpass.py b/Lib/getpass.py
index 8b42c0a536b..bd0097ced94 100644
--- a/Lib/getpass.py
+++ b/Lib/getpass.py
@@ -156,7 +156,11 @@ def getuser():
First try various environment variables, then the password
database. This works on Windows as long as USERNAME is set.
+ Any failure to find a username raises OSError.
+ .. versionchanged:: 3.13
+ Previously, various exceptions beyond just :exc:`OSError`
+ were raised.
"""
for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
@@ -164,9 +168,12 @@ def getuser():
if user:
return user
- # If this fails, the exception will "explain" why
- import pwd
- return pwd.getpwuid(os.getuid())[0]
+ try:
+ import pwd
+ return pwd.getpwuid(os.getuid())[0]
+ except (ImportError, KeyError) as e:
+ raise OSError('No username set in the environment') from e
+
# Bind the name getpass to the appropriate function
try: