diff options
Diffstat (limited to 'google/api_core')
-rw-r--r-- | google/api_core/future/async_future.py | 5 | ||||
-rw-r--r-- | google/api_core/gapic_v1/__init__.py | 1 | ||||
-rw-r--r-- | google/api_core/gapic_v1/config.py | 4 | ||||
-rw-r--r-- | google/api_core/gapic_v1/config_async.py | 4 | ||||
-rw-r--r-- | google/api_core/gapic_v1/method_async.py | 19 | ||||
-rw-r--r-- | google/api_core/grpc_helpers.py | 58 | ||||
-rw-r--r-- | google/api_core/grpc_helpers_async.py | 35 | ||||
-rw-r--r-- | google/api_core/iam.py | 5 | ||||
-rw-r--r-- | google/api_core/operation.py | 16 | ||||
-rw-r--r-- | google/api_core/operation_async.py | 8 | ||||
-rw-r--r-- | google/api_core/operations_v1/operations_async_client.py | 16 | ||||
-rw-r--r-- | google/api_core/operations_v1/operations_client.py | 8 | ||||
-rw-r--r-- | google/api_core/retry_async.py | 33 |
13 files changed, 126 insertions, 86 deletions
diff --git a/google/api_core/future/async_future.py b/google/api_core/future/async_future.py index e1d158d..0343fbe 100644 --- a/google/api_core/future/async_future.py +++ b/google/api_core/future/async_future.py @@ -24,6 +24,7 @@ from google.api_core.future import base class _OperationNotComplete(Exception): """Private exception used for polling via retry.""" + pass @@ -145,7 +146,9 @@ class AsyncFuture(base.Future): is complete. """ if self._background_task is None: - self._background_task = asyncio.get_event_loop().create_task(self._blocking_poll()) + self._background_task = asyncio.get_event_loop().create_task( + self._blocking_poll() + ) self._future.add_done_callback(fn) def set_result(self, result): diff --git a/google/api_core/gapic_v1/__init__.py b/google/api_core/gapic_v1/__init__.py index ed95da1..6632047 100644 --- a/google/api_core/gapic_v1/__init__.py +++ b/google/api_core/gapic_v1/__init__.py @@ -24,5 +24,6 @@ __all__ = ["client_info", "config", "method", "routing_header"] if sys.version_info >= (3, 6): from google.api_core.gapic_v1 import config_async # noqa: F401 from google.api_core.gapic_v1 import method_async # noqa: F401 + __all__.append("config_async") __all__.append("method_async") diff --git a/google/api_core/gapic_v1/config.py b/google/api_core/gapic_v1/config.py index 2a56cf1..29e8645 100644 --- a/google/api_core/gapic_v1/config.py +++ b/google/api_core/gapic_v1/config.py @@ -153,7 +153,9 @@ def parse_method_configs(interface_config, retry_impl=retry.Retry): if retry_params_name is not None: retry_params = retry_params_map[retry_params_name] retry_ = _retry_from_retry_config( - retry_params, retry_codes_map[method_params["retry_codes_name"]], retry_impl + retry_params, + retry_codes_map[method_params["retry_codes_name"]], + retry_impl, ) timeout_ = _timeout_from_retry_config(retry_params) diff --git a/google/api_core/gapic_v1/config_async.py b/google/api_core/gapic_v1/config_async.py index 00e5e24..13d6a48 100644 --- a/google/api_core/gapic_v1/config_async.py +++ b/google/api_core/gapic_v1/config_async.py @@ -38,5 +38,5 @@ def parse_method_configs(interface_config): configuration. """ return config.parse_method_configs( - interface_config, - retry_impl=retry_async.AsyncRetry) + interface_config, retry_impl=retry_async.AsyncRetry + ) diff --git a/google/api_core/gapic_v1/method_async.py b/google/api_core/gapic_v1/method_async.py index 5210b2b..76e5757 100644 --- a/google/api_core/gapic_v1/method_async.py +++ b/google/api_core/gapic_v1/method_async.py @@ -19,16 +19,16 @@ pagination, and long-running operations to gRPC methods. from google.api_core import general_helpers, grpc_helpers_async from google.api_core.gapic_v1 import client_info -from google.api_core.gapic_v1.method import (_GapicCallable, # noqa: F401 - DEFAULT, - USE_DEFAULT_METADATA) +from google.api_core.gapic_v1.method import _GapicCallable +from google.api_core.gapic_v1.method import DEFAULT # noqa: F401 +from google.api_core.gapic_v1.method import USE_DEFAULT_METADATA # noqa: F401 def wrap_method( - func, - default_retry=None, - default_timeout=None, - client_info=client_info.DEFAULT_CLIENT_INFO, + func, + default_retry=None, + default_timeout=None, + client_info=client_info.DEFAULT_CLIENT_INFO, ): """Wrap an async RPC method with common behavior. @@ -41,5 +41,6 @@ def wrap_method( metadata = [client_info.to_grpc_metadata()] if client_info is not None else None - return general_helpers.wraps(func)(_GapicCallable( - func, default_retry, default_timeout, metadata=metadata)) + return general_helpers.wraps(func)( + _GapicCallable(func, default_retry, default_timeout, metadata=metadata) + ) diff --git a/google/api_core/grpc_helpers.py b/google/api_core/grpc_helpers.py index e8f9ee8..62d9e53 100644 --- a/google/api_core/grpc_helpers.py +++ b/google/api_core/grpc_helpers.py @@ -157,7 +157,9 @@ def _wrap_stream_errors(callable_): # hidden flag to see if pre-fetching is disabled. # https://github.com/googleapis/python-pubsub/issues/93#issuecomment-630762257 prefetch_first = getattr(callable_, "_prefetch_first_result_", True) - return _StreamingResponseIterator(result, prefetch_first_result=prefetch_first) + return _StreamingResponseIterator( + result, prefetch_first_result=prefetch_first + ) except grpc.RpcError as exc: six.raise_from(exceptions.from_grpc_error(exc), exc) @@ -187,13 +189,14 @@ def wrap_errors(callable_): def _create_composite_credentials( - credentials=None, - credentials_file=None, - default_scopes=None, - scopes=None, - ssl_credentials=None, - quota_project_id=None, - default_host=None): + credentials=None, + credentials_file=None, + default_scopes=None, + scopes=None, + ssl_credentials=None, + quota_project_id=None, + default_host=None, +): """Create the composite credentials for secure channels. Args: @@ -227,20 +230,20 @@ def _create_composite_credentials( if credentials_file: credentials, _ = google.auth.load_credentials_from_file( - credentials_file, - scopes=scopes, - default_scopes=default_scopes + credentials_file, scopes=scopes, default_scopes=default_scopes ) elif credentials: credentials = google.auth.credentials.with_scopes_if_required( - credentials, - scopes=scopes, - default_scopes=default_scopes + credentials, scopes=scopes, default_scopes=default_scopes ) else: - credentials, _ = google.auth.default(scopes=scopes, default_scopes=default_scopes) + credentials, _ = google.auth.default( + scopes=scopes, default_scopes=default_scopes + ) - if quota_project_id and isinstance(credentials, google.auth.credentials.CredentialsWithQuotaProject): + if quota_project_id and isinstance( + credentials, google.auth.credentials.CredentialsWithQuotaProject + ): credentials = credentials.with_quota_project(quota_project_id) request = google.auth.transport.requests.Request() @@ -257,21 +260,20 @@ def _create_composite_credentials( ssl_credentials = grpc.ssl_channel_credentials() # Combine the ssl credentials and the authorization credentials. - return grpc.composite_channel_credentials( - ssl_credentials, google_auth_credentials - ) + return grpc.composite_channel_credentials(ssl_credentials, google_auth_credentials) def create_channel( - target, - credentials=None, - scopes=None, - ssl_credentials=None, - credentials_file=None, - quota_project_id=None, - default_scopes=None, - default_host=None, - **kwargs): + target, + credentials=None, + scopes=None, + ssl_credentials=None, + credentials_file=None, + quota_project_id=None, + default_scopes=None, + default_host=None, + **kwargs +): """Create a secure channel with credentials. Args: diff --git a/google/api_core/grpc_helpers_async.py b/google/api_core/grpc_helpers_async.py index 14eb5a1..92df645 100644 --- a/google/api_core/grpc_helpers_async.py +++ b/google/api_core/grpc_helpers_async.py @@ -36,7 +36,6 @@ HAS_GRPC_GCP = False class _WrappedCall(aio.Call): - def __init__(self): self._call = None @@ -80,7 +79,6 @@ class _WrappedCall(aio.Call): class _WrappedUnaryResponseMixin(_WrappedCall): - def __await__(self): try: response = yield from self._call.__await__() @@ -90,7 +88,6 @@ class _WrappedUnaryResponseMixin(_WrappedCall): class _WrappedStreamResponseMixin(_WrappedCall): - def __init__(self): self._wrapped_async_generator = None @@ -117,7 +114,6 @@ class _WrappedStreamResponseMixin(_WrappedCall): class _WrappedStreamRequestMixin(_WrappedCall): - async def write(self, request): try: await self._call.write(request) @@ -142,11 +138,15 @@ class _WrappedUnaryStreamCall(_WrappedStreamResponseMixin, aio.UnaryStreamCall): """Wrapped UnaryStreamCall to map exceptions.""" -class _WrappedStreamUnaryCall(_WrappedUnaryResponseMixin, _WrappedStreamRequestMixin, aio.StreamUnaryCall): +class _WrappedStreamUnaryCall( + _WrappedUnaryResponseMixin, _WrappedStreamRequestMixin, aio.StreamUnaryCall +): """Wrapped StreamUnaryCall to map exceptions.""" -class _WrappedStreamStreamCall(_WrappedStreamRequestMixin, _WrappedStreamResponseMixin, aio.StreamStreamCall): +class _WrappedStreamStreamCall( + _WrappedStreamRequestMixin, _WrappedStreamResponseMixin, aio.StreamStreamCall +): """Wrapped StreamStreamCall to map exceptions.""" @@ -177,7 +177,7 @@ def _wrap_stream_errors(callable_): elif isinstance(call, aio.StreamStreamCall): call = _WrappedStreamStreamCall().with_call(call) else: - raise TypeError('Unexpected type of call %s' % type(call)) + raise TypeError("Unexpected type of call %s" % type(call)) await call.wait_for_connection() return call @@ -207,15 +207,16 @@ def wrap_errors(callable_): def create_channel( - target, - credentials=None, - scopes=None, - ssl_credentials=None, - credentials_file=None, - quota_project_id=None, - default_scopes=None, - default_host=None, - **kwargs): + target, + credentials=None, + scopes=None, + ssl_credentials=None, + credentials_file=None, + quota_project_id=None, + default_scopes=None, + default_host=None, + **kwargs +): """Create an AsyncIO secure channel with credentials. Args: @@ -251,7 +252,7 @@ def create_channel( default_scopes=default_scopes, ssl_credentials=ssl_credentials, quota_project_id=quota_project_id, - default_host=default_host + default_host=default_host, ) return aio.secure_channel(target, composite_credentials, **kwargs) diff --git a/google/api_core/iam.py b/google/api_core/iam.py index c498c68..fc35469 100644 --- a/google/api_core/iam.py +++ b/google/api_core/iam.py @@ -450,10 +450,7 @@ class Policy(collections_abc.MutableMapping): for binding in self._bindings: members = binding.get("members") if members: - new_binding = { - "role": binding["role"], - "members": sorted(members) - } + new_binding = {"role": binding["role"], "members": sorted(members)} condition = binding.get("condition") if condition: new_binding["condition"] = condition diff --git a/google/api_core/operation.py b/google/api_core/operation.py index a806523..b17f753 100644 --- a/google/api_core/operation.py +++ b/google/api_core/operation.py @@ -310,8 +310,12 @@ def from_grpc(operation, operations_stub, result_type, grpc_metadata=None, **kwa ~.api_core.operation.Operation: The operation future to track the given operation. """ - refresh = functools.partial(_refresh_grpc, operations_stub, operation.name, metadata=grpc_metadata) - cancel = functools.partial(_cancel_grpc, operations_stub, operation.name, metadata=grpc_metadata) + refresh = functools.partial( + _refresh_grpc, operations_stub, operation.name, metadata=grpc_metadata + ) + cancel = functools.partial( + _cancel_grpc, operations_stub, operation.name, metadata=grpc_metadata + ) return Operation(operation, refresh, cancel, result_type, **kwargs) @@ -338,6 +342,10 @@ def from_gapic(operation, operations_client, result_type, grpc_metadata=None, ** ~.api_core.operation.Operation: The operation future to track the given operation. """ - refresh = functools.partial(operations_client.get_operation, operation.name, metadata=grpc_metadata) - cancel = functools.partial(operations_client.cancel_operation, operation.name, metadata=grpc_metadata) + refresh = functools.partial( + operations_client.get_operation, operation.name, metadata=grpc_metadata + ) + cancel = functools.partial( + operations_client.cancel_operation, operation.name, metadata=grpc_metadata + ) return Operation(operation, refresh, cancel, result_type, **kwargs) diff --git a/google/api_core/operation_async.py b/google/api_core/operation_async.py index b137235..6bae865 100644 --- a/google/api_core/operation_async.py +++ b/google/api_core/operation_async.py @@ -212,6 +212,10 @@ def from_gapic(operation, operations_client, result_type, grpc_metadata=None, ** ~.api_core.operation.Operation: The operation future to track the given operation. """ - refresh = functools.partial(operations_client.get_operation, operation.name, metadata=grpc_metadata) - cancel = functools.partial(operations_client.cancel_operation, operation.name, metadata=grpc_metadata) + refresh = functools.partial( + operations_client.get_operation, operation.name, metadata=grpc_metadata + ) + cancel = functools.partial( + operations_client.cancel_operation, operation.name, metadata=grpc_metadata + ) return AsyncOperation(operation, refresh, cancel, result_type, **kwargs) diff --git a/google/api_core/operations_v1/operations_async_client.py b/google/api_core/operations_v1/operations_async_client.py index b3d0135..5a5e556 100644 --- a/google/api_core/operations_v1/operations_async_client.py +++ b/google/api_core/operations_v1/operations_async_client.py @@ -125,7 +125,9 @@ class OperationsAsyncClient: metadata = metadata or [] metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) - return await self._get_operation(request, retry=retry, timeout=timeout, metadata=metadata) + return await self._get_operation( + request, retry=retry, timeout=timeout, metadata=metadata + ) async def list_operations( self, @@ -192,7 +194,9 @@ class OperationsAsyncClient: metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) # Create the method used to fetch pages - method = functools.partial(self._list_operations, retry=retry, timeout=timeout, metadata=metadata) + method = functools.partial( + self._list_operations, retry=retry, timeout=timeout, metadata=metadata + ) iterator = page_iterator_async.AsyncGRPCIterator( client=None, @@ -260,7 +264,9 @@ class OperationsAsyncClient: metadata = metadata or [] metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) - await self._cancel_operation(request, retry=retry, timeout=timeout, metadata=metadata) + await self._cancel_operation( + request, retry=retry, timeout=timeout, metadata=metadata + ) async def delete_operation( self, @@ -311,4 +317,6 @@ class OperationsAsyncClient: metadata = metadata or [] metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) - await self._delete_operation(request, retry=retry, timeout=timeout, metadata=metadata) + await self._delete_operation( + request, retry=retry, timeout=timeout, metadata=metadata + ) diff --git a/google/api_core/operations_v1/operations_client.py b/google/api_core/operations_v1/operations_client.py index b1218cf..e48eac0 100644 --- a/google/api_core/operations_v1/operations_client.py +++ b/google/api_core/operations_v1/operations_client.py @@ -139,7 +139,9 @@ class OperationsClient(object): metadata = metadata or [] metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) - return self._get_operation(request, retry=retry, timeout=timeout, metadata=metadata) + return self._get_operation( + request, retry=retry, timeout=timeout, metadata=metadata + ) def list_operations( self, @@ -206,7 +208,9 @@ class OperationsClient(object): metadata.append(gapic_v1.routing_header.to_grpc_metadata({"name": name})) # Create the method used to fetch pages - method = functools.partial(self._list_operations, retry=retry, timeout=timeout, metadata=metadata) + method = functools.partial( + self._list_operations, retry=retry, timeout=timeout, metadata=metadata + ) iterator = page_iterator.GRPCIterator( client=None, diff --git a/google/api_core/retry_async.py b/google/api_core/retry_async.py index f925c3d..2dfa2f6 100644 --- a/google/api_core/retry_async.py +++ b/google/api_core/retry_async.py @@ -56,9 +56,12 @@ import datetime import functools import logging -from google.api_core import datetime_helpers, exceptions -from google.api_core.retry import (exponential_sleep_generator, # noqa: F401 - if_exception_type, if_transient_error) +from google.api_core import datetime_helpers +from google.api_core import exceptions +from google.api_core.retry import exponential_sleep_generator +from google.api_core.retry import if_exception_type # noqa: F401 +from google.api_core.retry import if_transient_error + _LOGGER = logging.getLogger(__name__) _DEFAULT_INITIAL_DELAY = 1.0 # seconds @@ -96,7 +99,11 @@ async def retry_target(target, predicate, sleep_generator, deadline, on_error=No ValueError: If the sleep generator stops yielding values. Exception: If the target raises a method that isn't retryable. """ - deadline_dt = (datetime_helpers.utcnow() + datetime.timedelta(seconds=deadline)) if deadline else None + deadline_dt = ( + (datetime_helpers.utcnow() + datetime.timedelta(seconds=deadline)) + if deadline + else None + ) last_exc = None @@ -107,7 +114,7 @@ async def retry_target(target, predicate, sleep_generator, deadline, on_error=No else: return await asyncio.wait_for( target(), - timeout=(deadline_dt - datetime_helpers.utcnow()).total_seconds() + timeout=(deadline_dt - datetime_helpers.utcnow()).total_seconds(), ) # pylint: disable=broad-except # This function explicitly must deal with broad exceptions. @@ -215,13 +222,15 @@ class AsyncRetry: return retry_wrapped_func - def _replace(self, - predicate=None, - initial=None, - maximum=None, - multiplier=None, - deadline=None, - on_error=None): + def _replace( + self, + predicate=None, + initial=None, + maximum=None, + multiplier=None, + deadline=None, + on_error=None, + ): return AsyncRetry( predicate=predicate or self._predicate, initial=initial or self._initial, |