proxygen
upload Namespace Reference

Classes

class  AbstractRpcServer
 
class  ClientLoginError
 
class  GitVCS
 
class  HttpRpcServer
 elif e.code >= 500 and e.code < 600:

Server Error - try again.

More...
 
class  MercurialVCS
 
class  SubversionVCS
 
class  VersionControlSystem
 

Functions

def GetEmail (prompt)
 
def StatusUpdate (msg)
 
def ErrorExit (msg)
 
def GetRpcServer (options)
 
def EncodeMultipartFormData (fields, files)
 
def GetContentType (filename)
 
def RunShellWithReturnCode (command, print_output=False, universal_newlines=True)
 
def RunShell (command, silent_ok=False, universal_newlines=True, print_output=False)
 
def SplitPatch (data)
 
def UploadSeparatePatches (issue, rpc_server, patchset, data, options)
 
def GuessVCS (options)
 
def RealMain (argv, data=None)
 
def main ()
 

Variables

int verbosity = 1
 
int MAX_UPLOAD_SIZE = 900
 
 parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")
 
 action
 
 dest
 
 default
 
 help
 
 group = parser.add_option_group("Logging options")
 
 const
 
 metavar
 
 type
 
 use_shell = sys.platform.startswith("win")
 

Function Documentation

def upload.EncodeMultipartFormData (   fields,
  files 
)
Encode form fields for multipart/form-data.

Args:
  fields: A sequence of (name, value) elements for regular form fields.
  files: A sequence of (name, filename, value) elements for data to be
         uploaded as files.
Returns:
  (content_type, body) ready for httplib.HTTP instance.

Source:
  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306

Definition at line 498 of file upload.py.

References GetContentType().

Referenced by upload.HttpRpcServer._GetOpener(), upload.MercurialVCS.GetBaseFile(), RealMain(), upload.VersionControlSystem.UploadBaseFiles(), and UploadSeparatePatches().

498 def EncodeMultipartFormData(fields, files):
499  """Encode form fields for multipart/form-data.
500 
501  Args:
502  fields: A sequence of (name, value) elements for regular form fields.
503  files: A sequence of (name, filename, value) elements for data to be
504  uploaded as files.
505  Returns:
506  (content_type, body) ready for httplib.HTTP instance.
507 
508  Source:
509  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
510  """
511  BOUNDARY = '-M-A-G-I-C---B-O-U-N-D-A-R-Y-'
512  CRLF = '\r\n'
513  lines = []
514  for (key, value) in fields:
515  lines.append('--' + BOUNDARY)
516  lines.append('Content-Disposition: form-data; name="%s"' % key)
517  lines.append('')
518  lines.append(value)
519  for (key, filename, value) in files:
520  lines.append('--' + BOUNDARY)
521  lines.append('Content-Disposition: form-data; name="%s"; filename="%s"' %
522  (key, filename))
523  lines.append('Content-Type: %s' % GetContentType(filename))
524  lines.append('')
525  lines.append(value)
526  lines.append('--' + BOUNDARY + '--')
527  lines.append('')
528  body = CRLF.join(lines)
529  content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
530  return content_type, body
531 
532 
def EncodeMultipartFormData(fields, files)
Definition: upload.py:498
def GetContentType(filename)
Definition: upload.py:533
def upload.ErrorExit (   msg)
def upload.GetContentType (   filename)
Helper to guess the content-type from the filename.

Definition at line 533 of file upload.py.

Referenced by upload.HttpRpcServer._GetOpener(), and EncodeMultipartFormData().

533 def GetContentType(filename):
534  """Helper to guess the content-type from the filename."""
535  return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
536 
537 
538 # Use a shell for subcommands on Windows to get a PATH search.
def GetContentType(filename)
Definition: upload.py:533
def upload.GetEmail (   prompt)
Prompts the user for their email address and returns it.

The last used email address is saved to a file and offered up as a suggestion
to the user. If the user presses enter without typing in anything the last
used email address is used. If the user enters a new address, it is saved
for next time we prompt.

Definition at line 65 of file upload.py.

References folly::detail::distributed_mutex.strip().

Referenced by upload.HttpRpcServer._GetOpener(), and GetRpcServer().

65 def GetEmail(prompt):
66  """Prompts the user for their email address and returns it.
67 
68  The last used email address is saved to a file and offered up as a suggestion
69  to the user. If the user presses enter without typing in anything the last
70  used email address is used. If the user enters a new address, it is saved
71  for next time we prompt.
72 
73  """
74  last_email_file_name = os.path.expanduser("~/.last_codereview_email_address")
75  last_email = ""
76  if os.path.exists(last_email_file_name):
77  try:
78  last_email_file = open(last_email_file_name, "r")
79  last_email = last_email_file.readline().strip("\n")
80  last_email_file.close()
81  prompt += " [%s]" % last_email
82  except IOError, e:
83  pass
84  email = raw_input(prompt + ": ").strip()
85  if email:
86  try:
87  last_email_file = open(last_email_file_name, "w")
88  last_email_file.write(email)
89  last_email_file.close()
90  except IOError, e:
91  pass
92  else:
93  email = last_email
94  return email
95 
96 
std::uint64_t strip(std::chrono::nanoseconds t)
def GetEmail(prompt)
Definition: upload.py:65
def upload.GetRpcServer (   options)
Returns an instance of an AbstractRpcServer.

Returns:
  A new AbstractRpcServer, on which RPC calls can be made.

Definition at line 458 of file upload.py.

References GetEmail().

Referenced by upload.HttpRpcServer._GetOpener(), upload.MercurialVCS.GetBaseFile(), and RealMain().

458 def GetRpcServer(options):
459  """Returns an instance of an AbstractRpcServer.
460 
461  Returns:
462  A new AbstractRpcServer, on which RPC calls can be made.
463  """
464 
465  rpc_server_class = HttpRpcServer
466 
467  def GetUserCredentials():
468  """Prompts the user for a username and password."""
469  email = options.email
470  if email is None:
471  email = GetEmail("Email (login for uploading to %s)" % options.server)
472  password = getpass.getpass("Password for %s: " % email)
473  return (email, password)
474 
475  # If this is the dev_appserver, use fake authentication.
476  host = (options.host or options.server).lower()
477  if host == "localhost" or host.startswith("localhost:"):
478  email = options.email
479  if email is None:
480  email = "test@example.com"
481  logging.info("Using debug user %s. Override with --email" % email)
482  server = rpc_server_class(
483  options.server,
484  lambda: (email, "password"),
485  host_override=options.host,
486  extra_headers={"Cookie":
487  'dev_appserver_login="%s:False"' % email},
488  save_cookies=options.save_cookies)
489  # Don't try to talk to ClientLogin.
490  server.authenticated = True
491  return server
492 
493  return rpc_server_class(options.server, GetUserCredentials,
494  host_override=options.host,
495  save_cookies=options.save_cookies)
496 
497 
def GetRpcServer(options)
Definition: upload.py:458
def GetEmail(prompt)
Definition: upload.py:65
def upload.GuessVCS (   options)
Helper to guess the version control system.

This examines the current directory, guesses which VersionControlSystem
we're using, and returns an instance of the appropriate class.  Exit with an
error if we can't figure it out.

Returns:
  A VersionControlSystem instance. Exits if the VCS can't be guessed.

Definition at line 1209 of file upload.py.

References ErrorExit(), and RunShellWithReturnCode().

Referenced by upload.MercurialVCS.GetBaseFile(), and RealMain().

1209 def GuessVCS(options):
1210  """Helper to guess the version control system.
1211 
1212  This examines the current directory, guesses which VersionControlSystem
1213  we're using, and returns an instance of the appropriate class. Exit with an
1214  error if we can't figure it out.
1215 
1216  Returns:
1217  A VersionControlSystem instance. Exits if the VCS can't be guessed.
1218  """
1219  # Mercurial has a command to get the base directory of a repository
1220  # Try running it, but don't die if we don't have hg installed.
1221  # NOTE: we try Mercurial first as it can sit on top of an SVN working copy.
1222  try:
1223  out, returncode = RunShellWithReturnCode(["hg", "root"])
1224  if returncode == 0:
1225  return MercurialVCS(options, out.strip())
1226  except OSError, (errno, message):
1227  if errno != 2: # ENOENT -- they don't have hg installed.
1228  raise
1229 
1230  # Subversion has a .svn in all working directories.
1231  if os.path.isdir('.svn'):
1232  logging.info("Guessed VCS = Subversion")
1233  return SubversionVCS(options)
1234 
1235  # Git has a command to test if you're in a git tree.
1236  # Try running it, but don't die if we don't have git installed.
1237  try:
1238  out, returncode = RunShellWithReturnCode(["git", "rev-parse",
1239  "--is-inside-work-tree"])
1240  if returncode == 0:
1241  return GitVCS(options)
1242  except OSError, (errno, message):
1243  if errno != 2: # ENOENT -- they don't have git installed.
1244  raise
1245 
1246  ErrorExit(("Could not guess version control system. "
1247  "Are you in a working copy directory?"))
1248 
1249 
def ErrorExit(msg)
Definition: upload.py:109
def GuessVCS(options)
Definition: upload.py:1209
def RunShellWithReturnCode(command, print_output=False, universal_newlines=True)
Definition: upload.py:542
def upload.main ( void  )

Definition at line 1377 of file upload.py.

References RealMain(), and StatusUpdate().

Referenced by upload.MercurialVCS.GetBaseFile().

1377 def main():
1378  try:
1379  RealMain(sys.argv)
1380  except KeyboardInterrupt:
1381  print
1382  StatusUpdate("Interrupted.")
1383  sys.exit(1)
1384 
1385 
def RealMain(argv, data=None)
Definition: upload.py:1250
def StatusUpdate(msg)
Definition: upload.py:97
def main()
Definition: upload.py:1377
def upload.RealMain (   argv,
  data = None 
)
The real main function.

Args:
  argv: Command line arguments.
  data: Diff contents. If None (default) the diff is generated by
    the VersionControlSystem implementation returned by GuessVCS().

Returns:
  A 2-tuple (issue id, patchset id).
  The patchset id is None if the base files are not uploaded by this
  script (applies only to SVN checkouts).

Definition at line 1250 of file upload.py.

References count, EncodeMultipartFormData(), ErrorExit(), GetRpcServer(), GuessVCS(), StatusUpdate(), folly::detail::distributed_mutex.strip(), and UploadSeparatePatches().

Referenced by upload.MercurialVCS.GetBaseFile(), and main().

1250 def RealMain(argv, data=None):
1251  """The real main function.
1252 
1253  Args:
1254  argv: Command line arguments.
1255  data: Diff contents. If None (default) the diff is generated by
1256  the VersionControlSystem implementation returned by GuessVCS().
1257 
1258  Returns:
1259  A 2-tuple (issue id, patchset id).
1260  The patchset id is None if the base files are not uploaded by this
1261  script (applies only to SVN checkouts).
1262  """
1263  logging.basicConfig(format=("%(asctime).19s %(levelname)s %(filename)s:"
1264  "%(lineno)s %(message)s "))
1265  os.environ['LC_ALL'] = 'C'
1266  options, args = parser.parse_args(argv[1:])
1267  global verbosity
1268  verbosity = options.verbose
1269  if verbosity >= 3:
1270  logging.getLogger().setLevel(logging.DEBUG)
1271  elif verbosity >= 2:
1272  logging.getLogger().setLevel(logging.INFO)
1273  vcs = GuessVCS(options)
1274  if isinstance(vcs, SubversionVCS):
1275  # base field is only allowed for Subversion.
1276  # Note: Fetching base files may become deprecated in future releases.
1277  base = vcs.GuessBase(options.download_base)
1278  else:
1279  base = None
1280  if not base and options.download_base:
1281  options.download_base = True
1282  logging.info("Enabled upload of base file")
1283  if not options.assume_yes:
1284  vcs.CheckForUnknownFiles()
1285  if data is None:
1286  data = vcs.GenerateDiff(args)
1287  files = vcs.GetBaseFiles(data)
1288  if verbosity >= 1:
1289  print "Upload server:", options.server, "(change with -s/--server)"
1290  if options.issue:
1291  prompt = "Message describing this patch set: "
1292  else:
1293  prompt = "New issue subject: "
1294  message = options.message or raw_input(prompt).strip()
1295  if not message:
1296  ErrorExit("A non-empty message is required")
1297  rpc_server = GetRpcServer(options)
1298  form_fields = [("subject", message)]
1299  if base:
1300  form_fields.append(("base", base))
1301  if options.issue:
1302  form_fields.append(("issue", str(options.issue)))
1303  if options.email:
1304  form_fields.append(("user", options.email))
1305  if options.reviewers:
1306  for reviewer in options.reviewers.split(','):
1307  if "@" in reviewer and not reviewer.split("@")[1].count(".") == 1:
1308  ErrorExit("Invalid email address: %s" % reviewer)
1309  form_fields.append(("reviewers", options.reviewers))
1310  if options.cc:
1311  for cc in options.cc.split(','):
1312  if "@" in cc and not cc.split("@")[1].count(".") == 1:
1313  ErrorExit("Invalid email address: %s" % cc)
1314  form_fields.append(("cc", options.cc))
1315  description = options.description
1316  if options.description_file:
1317  if options.description:
1318  ErrorExit("Can't specify description and description_file")
1319  file = open(options.description_file, 'r')
1320  description = file.read()
1321  file.close()
1322  if description:
1323  form_fields.append(("description", description))
1324  # Send a hash of all the base file so the server can determine if a copy
1325  # already exists in an earlier patchset.
1326  base_hashes = ""
1327  for file, info in files.iteritems():
1328  if not info[0] is None:
1329  checksum = md5.new(info[0]).hexdigest()
1330  if base_hashes:
1331  base_hashes += "|"
1332  base_hashes += checksum + ":" + file
1333  form_fields.append(("base_hashes", base_hashes))
1334  # If we're uploading base files, don't send the email before the uploads, so
1335  # that it contains the file status.
1336  if options.send_mail and options.download_base:
1337  form_fields.append(("send_mail", "1"))
1338  if not options.download_base:
1339  form_fields.append(("content_upload", "1"))
1340  if len(data) > MAX_UPLOAD_SIZE:
1341  print "Patch is large, so uploading file patches separately."
1342  uploaded_diff_file = []
1343  form_fields.append(("separate_patches", "1"))
1344  else:
1345  uploaded_diff_file = [("data", "data.diff", data)]
1346  ctype, body = EncodeMultipartFormData(form_fields, uploaded_diff_file)
1347  response_body = rpc_server.Send("/upload", body, content_type=ctype)
1348  patchset = None
1349  if not options.download_base or not uploaded_diff_file:
1350  lines = response_body.splitlines()
1351  if len(lines) >= 2:
1352  msg = lines[0]
1353  patchset = lines[1].strip()
1354  patches = [x.split(" ", 1) for x in lines[2:]]
1355  else:
1356  msg = response_body
1357  else:
1358  msg = response_body
1359  StatusUpdate(msg)
1360  if not response_body.startswith("Issue created.") and \
1361  not response_body.startswith("Issue updated."):
1362  sys.exit(0)
1363  issue = msg[msg.rfind("/")+1:]
1364 
1365  if not uploaded_diff_file:
1366  result = UploadSeparatePatches(issue, rpc_server, patchset, data, options)
1367  if not options.download_base:
1368  patches = result
1369 
1370  if not options.download_base:
1371  vcs.UploadBaseFiles(issue, rpc_server, patches, patchset, options, files)
1372  if options.send_mail:
1373  rpc_server.Send("/" + issue + "/mail", payload="")
1374  return issue, patchset
1375 
1376 
def GetRpcServer(options)
Definition: upload.py:458
def UploadSeparatePatches(issue, rpc_server, patchset, data, options)
Definition: upload.py:1181
def ErrorExit(msg)
Definition: upload.py:109
std::uint64_t strip(std::chrono::nanoseconds t)
def EncodeMultipartFormData(fields, files)
Definition: upload.py:498
def RealMain(argv, data=None)
Definition: upload.py:1250
int * count
def StatusUpdate(msg)
Definition: upload.py:97
def GuessVCS(options)
Definition: upload.py:1209
def upload.RunShell (   command,
  silent_ok = False,
  universal_newlines = True,
  print_output = False 
)

Definition at line 578 of file upload.py.

References ErrorExit(), and RunShellWithReturnCode().

Referenced by upload.MercurialVCS.__init__(), upload.HttpRpcServer._GetOpener(), upload.SubversionVCS._GuessBase(), upload.SubversionVCS.GenerateDiff(), upload.GitVCS.GenerateDiff(), upload.MercurialVCS.GenerateDiff(), upload.SubversionVCS.GetBaseFile(), upload.MercurialVCS.GetBaseFile(), upload.SubversionVCS.GetStatus(), upload.SubversionVCS.GetUnknownFiles(), upload.GitVCS.GetUnknownFiles(), upload.MercurialVCS.GetUnknownFiles(), and RunShellWithReturnCode().

578  print_output=False):
579  data, retcode = RunShellWithReturnCode(command, print_output,
580  universal_newlines)
581  if retcode:
582  ErrorExit("Got error status from %s:\n%s" % (command, data))
583  if not silent_ok and not data:
584  ErrorExit("No output from %s" % command)
585  return data
586 
587 
def ErrorExit(msg)
Definition: upload.py:109
def RunShellWithReturnCode(command, print_output=False, universal_newlines=True)
Definition: upload.py:542
def upload.RunShellWithReturnCode (   command,
  print_output = False,
  universal_newlines = True 
)
Executes a command and returns the output from stdout and the return code.

Args:
  command: Command to execute.
  print_output: If True, the output is printed to stdout.
                If False, both stdout and stderr are ignored.
  universal_newlines: Use universal_newlines flag (default: True).

Returns:
  Tuple (output, return code)

Definition at line 542 of file upload.py.

References join, and RunShell().

Referenced by upload.HttpRpcServer._GetOpener(), upload.SubversionVCS.GetBaseFile(), upload.GitVCS.GetBaseFile(), upload.MercurialVCS.GetBaseFile(), upload.SubversionVCS.GetStatus(), GuessVCS(), and RunShell().

542  universal_newlines=True):
543  """Executes a command and returns the output from stdout and the return code.
544 
545  Args:
546  command: Command to execute.
547  print_output: If True, the output is printed to stdout.
548  If False, both stdout and stderr are ignored.
549  universal_newlines: Use universal_newlines flag (default: True).
550 
551  Returns:
552  Tuple (output, return code)
553  """
554  logging.info("Running %s", command)
555  p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
556  shell=use_shell, universal_newlines=universal_newlines)
557  if print_output:
558  output_array = []
559  while True:
560  line = p.stdout.readline()
561  if not line:
562  break
563  print line.strip("\n")
564  output_array.append(line)
565  output = "".join(output_array)
566  else:
567  output = p.stdout.read()
568  p.wait()
569  errout = p.stderr.read()
570  if print_output and errout:
571  print >>sys.stderr, errout
572  p.stdout.close()
573  p.stderr.close()
574  return output, p.returncode
575 
576 
#define join
def upload.SplitPatch (   data)
Splits a patch into separate pieces for each file.

Args:
  data: A string containing the output of svn diff.

Returns:
  A list of 2-tuple (filename, text) where text is the svn diff output
    pertaining to filename.

Definition at line 1141 of file upload.py.

References join, and replace().

Referenced by upload.MercurialVCS.GetBaseFile(), and UploadSeparatePatches().

1141 def SplitPatch(data):
1142  """Splits a patch into separate pieces for each file.
1143 
1144  Args:
1145  data: A string containing the output of svn diff.
1146 
1147  Returns:
1148  A list of 2-tuple (filename, text) where text is the svn diff output
1149  pertaining to filename.
1150  """
1151  patches = []
1152  filename = None
1153  diff = []
1154  for line in data.splitlines(True):
1155  new_filename = None
1156  if line.startswith('Index:'):
1157  unused, new_filename = line.split(':', 1)
1158  new_filename = new_filename.strip()
1159  elif line.startswith('Property changes on:'):
1160  unused, temp_filename = line.split(':', 1)
1161  # When a file is modified, paths use '/' between directories, however
1162  # when a property is modified '\' is used on Windows. Make them the same
1163  # otherwise the file shows up twice.
1164  temp_filename = temp_filename.strip().replace('\\', '/')
1165  if temp_filename != filename:
1166  # File has property changes but no modifications, create a new diff.
1167  new_filename = temp_filename
1168  if new_filename:
1169  if filename and diff:
1170  patches.append((filename, ''.join(diff)))
1171  filename = new_filename
1172  diff = [line]
1173  continue
1174  if diff is not None:
1175  diff.append(line)
1176  if filename and diff:
1177  patches.append((filename, ''.join(diff)))
1178  return patches
1179 
1180 
def SplitPatch(data)
Definition: upload.py:1141
void BENCHFUN() replace(size_t iters, size_t arg)
#define join
def upload.StatusUpdate (   msg)
Print a status message to stdout.

If 'verbosity' is greater than 0, print the message.

Args:
  msg: The string to print.

Definition at line 97 of file upload.py.

Referenced by upload.HttpRpcServer._Authenticate(), upload.HttpRpcServer._GetOpener(), upload.SubversionVCS.GetBaseFile(), upload.MercurialVCS.GetBaseFile(), main(), RealMain(), upload.VersionControlSystem.UploadBaseFiles(), and UploadSeparatePatches().

97 def StatusUpdate(msg):
98  """Print a status message to stdout.
99 
100  If 'verbosity' is greater than 0, print the message.
101 
102  Args:
103  msg: The string to print.
104  """
105  if verbosity > 0:
106  print msg
107 
108 
def StatusUpdate(msg)
Definition: upload.py:97
def upload.UploadSeparatePatches (   issue,
  rpc_server,
  patchset,
  data,
  options 
)
Uploads a separate patch for each file in the diff output.

Returns a list of [patch_key, filename] for each file.

Definition at line 1181 of file upload.py.

References EncodeMultipartFormData(), SplitPatch(), and StatusUpdate().

Referenced by upload.MercurialVCS.GetBaseFile(), and RealMain().

1181 def UploadSeparatePatches(issue, rpc_server, patchset, data, options):
1182  """Uploads a separate patch for each file in the diff output.
1183 
1184  Returns a list of [patch_key, filename] for each file.
1185  """
1186  patches = SplitPatch(data)
1187  rv = []
1188  for patch in patches:
1189  if len(patch[1]) > MAX_UPLOAD_SIZE:
1190  print ("Not uploading the patch for " + patch[0] +
1191  " because the file is too large.")
1192  continue
1193  form_fields = [("filename", patch[0])]
1194  if not options.download_base:
1195  form_fields.append(("content_upload", "1"))
1196  files = [("data", "data.diff", patch[1])]
1197  ctype, body = EncodeMultipartFormData(form_fields, files)
1198  url = "/%d/upload_patch/%d" % (int(issue), int(patchset))
1199  print "Uploading patch for " + patch[0]
1200  response_body = rpc_server.Send(url, body, content_type=ctype)
1201  lines = response_body.splitlines()
1202  if not lines or lines[0] != "OK":
1203  StatusUpdate(" --> %s" % response_body)
1204  sys.exit(1)
1205  rv.append([lines[1], patch[0]])
1206  return rv
1207 
1208 
def UploadSeparatePatches(issue, rpc_server, patchset, data, options)
Definition: upload.py:1181
def SplitPatch(data)
Definition: upload.py:1141
def EncodeMultipartFormData(fields, files)
Definition: upload.py:498
def StatusUpdate(msg)
Definition: upload.py:97

Variable Documentation

upload.default

Definition at line 394 of file upload.py.

upload.dest

Definition at line 394 of file upload.py.

Referenced by testing::internal::CodeLocation.CodeLocation(), folly::BasicFixedString< Char, N >.copy(), folly::bser.decodeString(), folly.demangle(), folly::symbolizer::Dwarf::Path.file(), folly::IOBufQueue.fillWritableRangeCache(), testing::internal.IsPathSeparator(), testing::internal::FilePath.Normalize(), folly::compression::detail::UpperBitsReader< Encoder, Instructions, SizeType >.prepareSkipTo(), producerConsumerBench(), proxygen::TraceEvent.readIntMeta(), folly::fbvector< HTTPHeaderCode >.relocate_undo(), folly::NestedCommandLineApp.resolveAlias(), runElementTypeTest(), runNeverFailThread(), runNeverFailUntilThread(), folly::fbvector< HTTPHeaderCode >.S_copy_n(), folly::fbvector< HTTPHeaderCode >.S_uninitialized_copy(), folly::fbvector< HTTPHeaderCode >.S_uninitialized_copy_a(), folly::fbvector< HTTPHeaderCode >.S_uninitialized_fill_n(), folly::fbvector< HTTPHeaderCode >.S_uninitialized_fill_n_a(), testing::internal.ShouldRunTestCase(), folly::compression::BitVectorReader< Encoder, Instructions, kUnchecked >.skip(), folly::compression::detail::UpperBitsReader< Encoder, Instructions, SizeType >.skip(), folly::compression::detail::UpperBitsReader< Encoder, Instructions, SizeType >.skipToNext(), folly.TEST(), TEST(), folly::LockFreeRingBuffer< T, Atom >.tryRead(), folly::detail::RingBufferSlot< T, Atom >.tryRead(), folly::LockFreeRingBuffer< T, Atom >.waitAndTryRead(), and folly::detail::RingBufferSlot< T, Atom >.waitAndTryRead().

upload.group = parser.add_option_group("Logging options")

Definition at line 397 of file upload.py.

upload.help

Definition at line 395 of file upload.py.

int upload.MAX_UPLOAD_SIZE = 900

Definition at line 62 of file upload.py.

upload.metavar

Definition at line 409 of file upload.py.

upload.parser = optparse.OptionParser(usage="%prog [options] [-- diff_options]")

Definition at line 392 of file upload.py.

upload.type

Definition at line 443 of file upload.py.

upload.use_shell = sys.platform.startswith("win")

Definition at line 539 of file upload.py.

int upload.verbosity = 1

Definition at line 59 of file upload.py.

Referenced by proxygen::HTTPMessage.getUpgradeProtocol().