Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: third_party/upload.py

Issue 2076643002: git cl upload: stop using deprecated except syntax (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: fix typo in OSError Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # coding: utf-8 2 # coding: utf-8
3 # 3 #
4 # Copyright 2007 Google Inc. 4 # Copyright 2007 Google Inc.
5 # 5 #
6 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License. 7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at 8 # You may obtain a copy of the License at
9 # 9 #
10 # http://www.apache.org/licenses/LICENSE-2.0 10 # http://www.apache.org/licenses/LICENSE-2.0
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 """ 140 """
141 last_email_file_name = os.path.expanduser("~/.last_codereview_email_address") 141 last_email_file_name = os.path.expanduser("~/.last_codereview_email_address")
142 last_email = "" 142 last_email = ""
143 if os.path.exists(last_email_file_name): 143 if os.path.exists(last_email_file_name):
144 try: 144 try:
145 last_email_file = open(last_email_file_name, "r") 145 last_email_file = open(last_email_file_name, "r")
146 last_email = last_email_file.readline().strip("\n") 146 last_email = last_email_file.readline().strip("\n")
147 last_email_file.close() 147 last_email_file.close()
148 prompt += " [%s]" % last_email 148 prompt += " [%s]" % last_email
149 except IOError, e: 149 except IOError as e:
150 pass 150 pass
151 email = raw_input(prompt + ": ").strip() 151 email = raw_input(prompt + ": ").strip()
152 if email: 152 if email:
153 try: 153 try:
154 last_email_file = open(last_email_file_name, "w") 154 last_email_file = open(last_email_file_name, "w")
155 last_email_file.write(email) 155 last_email_file.write(email)
156 last_email_file.close() 156 last_email_file.close()
157 except IOError, e: 157 except IOError as e:
158 pass 158 pass
159 else: 159 else:
160 email = last_email 160 email = last_email
161 return email 161 return email
162 162
163 163
164 def StatusUpdate(msg): 164 def StatusUpdate(msg):
165 """Print a status message to stdout. 165 """Print a status message to stdout.
166 166
167 If 'verbosity' is greater than 0, print the message. 167 If 'verbosity' is greater than 0, print the message.
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 "source": "rietveld-codereview-upload", 281 "source": "rietveld-codereview-upload",
282 "accountType": account_type, 282 "accountType": account_type,
283 }), 283 }),
284 ) 284 )
285 try: 285 try:
286 response = self.opener.open(req) 286 response = self.opener.open(req)
287 response_body = response.read() 287 response_body = response.read()
288 response_dict = dict(x.split("=") 288 response_dict = dict(x.split("=")
289 for x in response_body.split("\n") if x) 289 for x in response_body.split("\n") if x)
290 return response_dict["Auth"] 290 return response_dict["Auth"]
291 except urllib2.HTTPError, e: 291 except urllib2.HTTPError as e:
292 if e.code == 403: 292 if e.code == 403:
293 body = e.read() 293 body = e.read()
294 response_dict = dict(x.split("=", 1) for x in body.split("\n") if x) 294 response_dict = dict(x.split("=", 1) for x in body.split("\n") if x)
295 raise ClientLoginError(req.get_full_url(), e.code, e.msg, 295 raise ClientLoginError(req.get_full_url(), e.code, e.msg,
296 e.headers, response_dict) 296 e.headers, response_dict)
297 else: 297 else:
298 raise 298 raise
299 299
300 def _GetAuthCookie(self, auth_token): 300 def _GetAuthCookie(self, auth_token):
301 """Fetches authentication cookies for an authentication token. 301 """Fetches authentication cookies for an authentication token.
302 302
303 Args: 303 Args:
304 auth_token: The authentication token returned by ClientLogin. 304 auth_token: The authentication token returned by ClientLogin.
305 305
306 Raises: 306 Raises:
307 HTTPError: If there was an error fetching the authentication cookies. 307 HTTPError: If there was an error fetching the authentication cookies.
308 """ 308 """
309 # This is a dummy value to allow us to identify when we're successful. 309 # This is a dummy value to allow us to identify when we're successful.
310 continue_location = "http://localhost/" 310 continue_location = "http://localhost/"
311 args = {"continue": continue_location, "auth": auth_token} 311 args = {"continue": continue_location, "auth": auth_token}
312 req = self._CreateRequest("%s/_ah/login?%s" % 312 req = self._CreateRequest("%s/_ah/login?%s" %
313 (self.host, urllib.urlencode(args))) 313 (self.host, urllib.urlencode(args)))
314 try: 314 try:
315 response = self.opener.open(req) 315 response = self.opener.open(req)
316 except urllib2.HTTPError, e: 316 except urllib2.HTTPError as e:
317 response = e 317 response = e
318 if (response.code != 302 or 318 if (response.code != 302 or
319 response.info()["location"] != continue_location): 319 response.info()["location"] != continue_location):
320 raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg, 320 raise urllib2.HTTPError(req.get_full_url(), response.code, response.msg,
321 response.headers, response.fp) 321 response.headers, response.fp)
322 self.authenticated = True 322 self.authenticated = True
323 323
324 def _Authenticate(self, force_refresh): 324 def _Authenticate(self, force_refresh):
325 """Authenticates the user. 325 """Authenticates the user.
326 326
(...skipping 23 matching lines...) Expand all
350 error_map = { 350 error_map = {
351 "badauth": "BadAuthentication", 351 "badauth": "BadAuthentication",
352 "cr": "CaptchaRequired", 352 "cr": "CaptchaRequired",
353 "adel": "AccountDeleted", 353 "adel": "AccountDeleted",
354 "adis": "AccountDisabled", 354 "adis": "AccountDisabled",
355 "sdis": "ServiceDisabled", 355 "sdis": "ServiceDisabled",
356 "ire": "ServiceUnavailable", 356 "ire": "ServiceUnavailable",
357 } 357 }
358 auth_token = self._GetAuthToken(credentials[0], credentials[1], 358 auth_token = self._GetAuthToken(credentials[0], credentials[1],
359 internal=True) 359 internal=True)
360 except ClientLoginError, exc: 360 except ClientLoginError as exc:
361 e = exc 361 e = exc
362 if e: 362 if e:
363 print('', file=sys.stderr) 363 print('', file=sys.stderr)
364 error_message = e.reason 364 error_message = e.reason
365 if error_map: 365 if error_map:
366 error_message = error_map.get(error_message, error_message) 366 error_message = error_map.get(error_message, error_message)
367 if error_message == "BadAuthentication": 367 if error_message == "BadAuthentication":
368 if e.info == "InvalidSecondFactor": 368 if e.info == "InvalidSecondFactor":
369 print >> sys.stderr, ( 369 print >> sys.stderr, (
370 "Use an application-specific password instead " 370 "Use an application-specific password instead "
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 req = self._CreateRequest(url=url, data=payload) 443 req = self._CreateRequest(url=url, data=payload)
444 req.add_header("Content-Type", content_type) 444 req.add_header("Content-Type", content_type)
445 if extra_headers: 445 if extra_headers:
446 for header, value in extra_headers.items(): 446 for header, value in extra_headers.items():
447 req.add_header(header, value) 447 req.add_header(header, value)
448 try: 448 try:
449 f = self.opener.open(req, timeout=70) 449 f = self.opener.open(req, timeout=70)
450 response = f.read() 450 response = f.read()
451 f.close() 451 f.close()
452 return response 452 return response
453 except urllib2.HTTPError, e: 453 except urllib2.HTTPError as e:
454 if tries > 3: 454 if tries > 3:
455 raise 455 raise
456 elif e.code in (302, 401, 403): 456 elif e.code in (302, 401, 403):
457 if not self.auth_function: 457 if not self.auth_function:
458 raise 458 raise
459 # Already tried force refresh, didn't help -> give up with error. 459 # Already tried force refresh, didn't help -> give up with error.
460 if auth_attempted: 460 if auth_attempted:
461 raise auth.AuthenticationError( 461 raise auth.AuthenticationError(
462 'Access to %s is denied (server returned HTTP %d).' 462 'Access to %s is denied (server returned HTTP %d).'
463 % (self.host, e.code)) 463 % (self.host, e.code))
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 ("is_current", str(not is_base)), 992 ("is_current", str(not is_base)),
993 ] 993 ]
994 if file_too_large: 994 if file_too_large:
995 form_fields.append(("file_too_large", "1")) 995 form_fields.append(("file_too_large", "1"))
996 if options.email: 996 if options.email:
997 form_fields.append(("user", options.email)) 997 form_fields.append(("user", options.email))
998 ctype, body = EncodeMultipartFormData(form_fields, 998 ctype, body = EncodeMultipartFormData(form_fields,
999 [("data", filename, content)]) 999 [("data", filename, content)])
1000 try: 1000 try:
1001 response_body = rpc_server.Send(url, body, content_type=ctype) 1001 response_body = rpc_server.Send(url, body, content_type=ctype)
1002 except urllib2.HTTPError, e: 1002 except urllib2.HTTPError as e:
1003 response_body = ("Failed to upload file for %s. Got %d status code." % 1003 response_body = ("Failed to upload file for %s. Got %d status code." %
1004 (filename, e.code)) 1004 (filename, e.code))
1005 1005
1006 if not response_body.startswith("OK"): 1006 if not response_body.startswith("OK"):
1007 StatusUpdate(" --> %s" % response_body) 1007 StatusUpdate(" --> %s" % response_body)
1008 sys.exit(1) 1008 sys.exit(1)
1009 1009
1010 return result 1010 return result
1011 1011
1012 patches = dict() 1012 patches = dict()
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
2062 def UploadFile(filename, data): 2062 def UploadFile(filename, data):
2063 form_fields = [("filename", filename)] 2063 form_fields = [("filename", filename)]
2064 if not options.download_base: 2064 if not options.download_base:
2065 form_fields.append(("content_upload", "1")) 2065 form_fields.append(("content_upload", "1"))
2066 files = [("data", "data.diff", data)] 2066 files = [("data", "data.diff", data)]
2067 ctype, body = EncodeMultipartFormData(form_fields, files) 2067 ctype, body = EncodeMultipartFormData(form_fields, files)
2068 url = "/%d/upload_patch/%d" % (int(issue), int(patchset)) 2068 url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
2069 2069
2070 try: 2070 try:
2071 response_body = rpc_server.Send(url, body, content_type=ctype) 2071 response_body = rpc_server.Send(url, body, content_type=ctype)
2072 except urllib2.HTTPError, e: 2072 except urllib2.HTTPError as e:
2073 response_body = ("Failed to upload patch for %s. Got %d status code." % 2073 response_body = ("Failed to upload patch for %s. Got %d status code." %
2074 (filename, e.code)) 2074 (filename, e.code))
2075 2075
2076 lines = response_body.splitlines() 2076 lines = response_body.splitlines()
2077 if not lines or lines[0] != "OK": 2077 if not lines or lines[0] != "OK":
2078 StatusUpdate(" --> %s" % response_body) 2078 StatusUpdate(" --> %s" % response_body)
2079 sys.exit(1) 2079 sys.exit(1)
2080 return ("Uploaded patch for " + filename, [lines[1], filename]) 2080 return ("Uploaded patch for " + filename, [lines[1], filename])
2081 2081
2082 threads = [] 2082 threads = []
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2126 def RunDetectCommand(vcs_type, command): 2126 def RunDetectCommand(vcs_type, command):
2127 """Helper to detect VCS by executing command. 2127 """Helper to detect VCS by executing command.
2128 2128
2129 Returns: 2129 Returns:
2130 A pair (vcs, output) or None. Throws exception on error. 2130 A pair (vcs, output) or None. Throws exception on error.
2131 """ 2131 """
2132 try: 2132 try:
2133 out, returncode = RunShellWithReturnCode(command) 2133 out, returncode = RunShellWithReturnCode(command)
2134 if returncode == 0: 2134 if returncode == 0:
2135 return (vcs_type, out.strip()) 2135 return (vcs_type, out.strip())
2136 except OSError, (errcode, message): 2136 except OSError as e:
2137 if errcode != errno.ENOENT: # command not found code 2137 if e.errno != errno.ENOENT: # command not found code
2138 raise 2138 raise
2139 2139
2140 # Mercurial has a command to get the base directory of a repository 2140 # Mercurial has a command to get the base directory of a repository
2141 # Try running it, but don't die if we don't have hg installed. 2141 # Try running it, but don't die if we don't have hg installed.
2142 # NOTE: we try Mercurial first as it can sit on top of an SVN working copy. 2142 # NOTE: we try Mercurial first as it can sit on top of an SVN working copy.
2143 res = RunDetectCommand(VCS_MERCURIAL, ["hg", "root"]) 2143 res = RunDetectCommand(VCS_MERCURIAL, ["hg", "root"])
2144 if res != None: 2144 if res != None:
2145 return res 2145 return res
2146 2146
2147 # Subversion from 1.7 has a single centralized .svn folder 2147 # Subversion from 1.7 has a single centralized .svn folder
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
2546 print 2546 print
2547 StatusUpdate("Interrupted.") 2547 StatusUpdate("Interrupted.")
2548 sys.exit(1) 2548 sys.exit(1)
2549 except auth.AuthenticationError as e: 2549 except auth.AuthenticationError as e:
2550 print(e, file=sys.stderr) 2550 print(e, file=sys.stderr)
2551 sys.exit(1) 2551 sys.exit(1)
2552 2552
2553 2553
2554 if __name__ == "__main__": 2554 if __name__ == "__main__":
2555 main() 2555 main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698