@@ -1579,8 +1579,7 @@ def ftp_open(self, req):
15791579 headers = email .message_from_string (headers )
15801580 return addinfourl (fp , headers , req .full_url )
15811581 except ftplib .all_errors as exp :
1582- exc = URLError ('ftp error: %r' % exp )
1583- raise exc .with_traceback (sys .exc_info ()[2 ])
1582+ raise URLError (f'ftp error: { exp } ' ) from exp
15841583
15851584 def connect_ftp (self , user , passwd , host , port , dirs , timeout ):
15861585 return ftpwrapper (user , passwd , host , port , dirs , timeout ,
@@ -1791,7 +1790,7 @@ def open(self, fullurl, data=None):
17911790 except (HTTPError , URLError ):
17921791 raise
17931792 except OSError as msg :
1794- raise OSError ('socket error' , msg ). with_traceback ( sys . exc_info ()[ 2 ])
1793+ raise OSError ('socket error' , msg ) from msg
17951794
17961795 def open_unknown (self , fullurl , data = None ):
17971796 """Overridable interface to open unknown URL type."""
@@ -2093,7 +2092,7 @@ def open_ftp(self, url):
20932092 headers = email .message_from_string (headers )
20942093 return addinfourl (fp , headers , "ftp:" + url )
20952094 except ftperrors () as exp :
2096- raise URLError ('ftp error %r' % exp ). with_traceback ( sys . exc_info ()[ 2 ])
2095+ raise URLError (f 'ftp error: { exp } ' ) from exp
20972096
20982097 def open_data (self , url , data = None ):
20992098 """Use "data" URL."""
@@ -2443,8 +2442,7 @@ def retrfile(self, file, type):
24432442 conn , retrlen = self .ftp .ntransfercmd (cmd )
24442443 except ftplib .error_perm as reason :
24452444 if str (reason )[:3 ] != '550' :
2446- raise URLError ('ftp error: %r' % reason ).with_traceback (
2447- sys .exc_info ()[2 ])
2445+ raise URLError (f'ftp error: { reason } ' ) from reason
24482446 if not conn :
24492447 # Set transfer mode to ASCII!
24502448 self .ftp .voidcmd ('TYPE A' )
0 commit comments