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

Unified Diff: tools/telemetry/third_party/gsutil/third_party/apitools/apitools/base/py/util.py

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/gsutil/third_party/apitools/apitools/base/py/util.py
diff --git a/tools/telemetry/third_party/gsutil/third_party/apitools/apitools/base/py/util.py b/tools/telemetry/third_party/gsutil/third_party/apitools/apitools/base/py/util.py
deleted file mode 100644
index 779dd97f13dce1d5f076118b66accb3e3666974c..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/third_party/apitools/apitools/base/py/util.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/env python
-"""Assorted utilities shared between parts of apitools."""
-
-import collections
-import os
-import random
-
-from protorpc import messages
-import six
-from six.moves import http_client
-import six.moves.urllib.error as urllib_error
-import six.moves.urllib.parse as urllib_parse
-import six.moves.urllib.request as urllib_request
-
-from apitools.base.py import encoding
-from apitools.base.py import exceptions
-
-__all__ = [
- 'DetectGae',
- 'DetectGce',
-]
-
-_RESERVED_URI_CHARS = r":/?#[]@!$&'()*+,;="
-
-
-def DetectGae():
- """Determine whether or not we're running on GAE.
-
- This is based on:
- https://developers.google.com/appengine/docs/python/#The_Environment
-
- Returns:
- True iff we're running on GAE.
- """
- server_software = os.environ.get('SERVER_SOFTWARE', '')
- return (server_software.startswith('Development/') or
- server_software.startswith('Google App Engine/'))
-
-
-def DetectGce():
- """Determine whether or not we're running on GCE.
-
- This is based on:
- https://cloud.google.com/compute/docs/metadata#runninggce
-
- Returns:
- True iff we're running on a GCE instance.
- """
- try:
- o = urllib_request.build_opener(urllib_request.ProxyHandler({})).open(
- urllib_request.Request('http://metadata.google.internal'))
- except urllib_error.URLError:
- return False
- return (o.getcode() == http_client.OK and
- o.headers.get('metadata-flavor') == 'Google')
-
-
-def NormalizeScopes(scope_spec):
- """Normalize scope_spec to a set of strings."""
- if isinstance(scope_spec, six.string_types):
- return set(scope_spec.split(' '))
- elif isinstance(scope_spec, collections.Iterable):
- return set(scope_spec)
- raise exceptions.TypecheckError(
- 'NormalizeScopes expected string or iterable, found %s' % (
- type(scope_spec),))
-
-
-def Typecheck(arg, arg_type, msg=None):
- if not isinstance(arg, arg_type):
- if msg is None:
- if isinstance(arg_type, tuple):
- msg = 'Type of arg is "%s", not one of %r' % (
- type(arg), arg_type)
- else:
- msg = 'Type of arg is "%s", not "%s"' % (type(arg), arg_type)
- raise exceptions.TypecheckError(msg)
- return arg
-
-
-def ExpandRelativePath(method_config, params, relative_path=None):
- """Determine the relative path for request."""
- path = relative_path or method_config.relative_path or ''
-
- for param in method_config.path_params:
- param_template = '{%s}' % param
- # For more details about "reserved word expansion", see:
- # http://tools.ietf.org/html/rfc6570#section-3.2.2
- reserved_chars = ''
- reserved_template = '{+%s}' % param
- if reserved_template in path:
- reserved_chars = _RESERVED_URI_CHARS
- path = path.replace(reserved_template, param_template)
- if param_template not in path:
- raise exceptions.InvalidUserInputError(
- 'Missing path parameter %s' % param)
- try:
- # TODO(craigcitro): Do we want to support some sophisticated
- # mapping here?
- value = params[param]
- except KeyError:
- raise exceptions.InvalidUserInputError(
- 'Request missing required parameter %s' % param)
- if value is None:
- raise exceptions.InvalidUserInputError(
- 'Request missing required parameter %s' % param)
- try:
- if not isinstance(value, six.string_types):
- value = str(value)
- path = path.replace(param_template,
- urllib_parse.quote(value.encode('utf_8'),
- reserved_chars))
- except TypeError as e:
- raise exceptions.InvalidUserInputError(
- 'Error setting required parameter %s to value %s: %s' % (
- param, value, e))
- return path
-
-
-def CalculateWaitForRetry(retry_attempt, max_wait=60):
- """Calculates amount of time to wait before a retry attempt.
-
- Wait time grows exponentially with the number of attempts. A
- random amount of jitter is added to spread out retry attempts from
- different clients.
-
- Args:
- retry_attempt: Retry attempt counter.
- max_wait: Upper bound for wait time.
-
- Returns:
- Amount of time to wait before retrying request.
-
- """
-
- wait_time = 2 ** retry_attempt
- # randrange requires a nonzero interval, so we want to drop it if
- # the range is too small for jitter.
- if retry_attempt:
- max_jitter = (2 ** retry_attempt) / 2
- wait_time += random.randrange(-max_jitter, max_jitter)
- return min(wait_time, max_wait)
-
-
-def AcceptableMimeType(accept_patterns, mime_type):
- """Return True iff mime_type is acceptable for one of accept_patterns.
-
- Note that this function assumes that all patterns in accept_patterns
- will be simple types of the form "type/subtype", where one or both
- of these can be "*". We do not support parameters (i.e. "; q=") in
- patterns.
-
- Args:
- accept_patterns: list of acceptable MIME types.
- mime_type: the mime type we would like to match.
-
- Returns:
- Whether or not mime_type matches (at least) one of these patterns.
- """
- if '/' not in mime_type:
- raise exceptions.InvalidUserInputError(
- 'Invalid MIME type: "%s"' % mime_type)
- unsupported_patterns = [p for p in accept_patterns if ';' in p]
- if unsupported_patterns:
- raise exceptions.GeneratedClientError(
- 'MIME patterns with parameter unsupported: "%s"' % ', '.join(
- unsupported_patterns))
-
- def MimeTypeMatches(pattern, mime_type):
- """Return True iff mime_type is acceptable for pattern."""
- # Some systems use a single '*' instead of '*/*'.
- if pattern == '*':
- pattern = '*/*'
- return all(accept in ('*', provided) for accept, provided
- in zip(pattern.split('/'), mime_type.split('/')))
-
- return any(MimeTypeMatches(pattern, mime_type)
- for pattern in accept_patterns)
-
-
-def MapParamNames(params, request_type):
- """Reverse parameter remappings for URL construction."""
- return [encoding.GetCustomJsonFieldMapping(request_type, json_name=p) or p
- for p in params]
-
-
-def MapRequestParams(params, request_type):
- """Perform any renames/remappings needed for URL construction.
-
- Currently, we have several ways to customize JSON encoding, in
- particular of field names and enums. This works fine for JSON
- bodies, but also needs to be applied for path and query parameters
- in the URL.
-
- This function takes a dictionary from param names to values, and
- performs any registered mappings. We also need the request type (to
- look up the mappings).
-
- Args:
- params: (dict) Map from param names to values
- request_type: (protorpc.messages.Message) request type for this API call
-
- Returns:
- A new dict of the same size, with all registered mappings applied.
- """
- new_params = dict(params)
- for param_name, value in params.items():
- field_remapping = encoding.GetCustomJsonFieldMapping(
- request_type, python_name=param_name)
- if field_remapping is not None:
- new_params[field_remapping] = new_params.pop(param_name)
- if isinstance(value, messages.Enum):
- new_params[param_name] = encoding.GetCustomJsonEnumMapping(
- type(value), python_name=str(value)) or str(value)
- return new_params

Powered by Google App Engine
This is Rietveld 408576698