@@ -422,8 +422,10 @@ def __init__(self, anonymous_user=None):
422422 if self .anonymous_user is not None :
423423 try :
424424 pwd .getpwnam (self .anonymous_user ).pw_dir # noqa
425- except KeyError :
426- raise AuthorizerError (f"no such user { anonymous_user } " )
425+ except KeyError as err :
426+ raise AuthorizerError (
427+ f"no such user { anonymous_user } "
428+ ) from err
427429
428430 # --- overridden / private API
429431
@@ -438,8 +440,8 @@ def validate_authentication(self, username, password, handler):
438440 try :
439441 pw1 = spwd .getspnam (username ).sp_pwd
440442 pw2 = crypt .crypt (password , pw1 )
441- except KeyError : # no such username
442- raise AuthenticationFailed (self .msg_no_such_user )
443+ except KeyError as err : # no such username
444+ raise AuthenticationFailed (self .msg_no_such_user ) from err
443445 else :
444446 if pw1 != pw2 :
445447 raise AuthenticationFailed (self .msg_wrong_password )
@@ -451,8 +453,8 @@ def impersonate_user(self, username, password):
451453 """
452454 try :
453455 pwdstruct = pwd .getpwnam (username )
454- except KeyError :
455- raise AuthorizerError (self .msg_no_such_user )
456+ except KeyError as err :
457+ raise AuthorizerError (self .msg_no_such_user ) from err
456458 else :
457459 os .setegid (pwdstruct .pw_gid )
458460 os .seteuid (pwdstruct .pw_uid )
@@ -475,8 +477,8 @@ def get_home_dir(self, username):
475477 """Return user home directory."""
476478 try :
477479 return pwd .getpwnam (username ).pw_dir
478- except KeyError :
479- raise AuthorizerError (self .msg_no_such_user )
480+ except KeyError as err :
481+ raise AuthorizerError (self .msg_no_such_user ) from err
480482
481483 @staticmethod
482484 def _get_system_users ():
@@ -713,8 +715,8 @@ def validate_authentication(self, username, password, handler):
713715 win32con .LOGON32_LOGON_INTERACTIVE ,
714716 win32con .LOGON32_PROVIDER_DEFAULT ,
715717 )
716- except pywintypes .error :
717- raise AuthenticationFailed (self .msg_wrong_password )
718+ except pywintypes .error as err :
719+ raise AuthenticationFailed (self .msg_wrong_password ) from err
718720
719721 @replace_anonymous
720722 def impersonate_user (self , username , password ):
@@ -747,15 +749,15 @@ def get_home_dir(self, username):
747749 win32security .LookupAccountName (None , username )[0 ]
748750 )
749751 except pywintypes .error as err :
750- raise AuthorizerError (err )
752+ raise AuthorizerError (err ) from err
751753 path = r"SOFTWARE\Microsoft\Windows NT"
752754 path += r"\CurrentVersion\ProfileList" + "\\ " + sid
753755 try :
754756 key = winreg .OpenKey (winreg .HKEY_LOCAL_MACHINE , path )
755- except OSError :
757+ except OSError as err :
756758 raise AuthorizerError (
757759 f"No profile directory defined for user { username } "
758- )
760+ ) from err
759761 value = winreg .QueryValueEx (key , "ProfileImagePath" )[0 ]
760762 home = win32api .ExpandEnvironmentStrings (value )
761763 return home
0 commit comments