|  | @@ -53,13 +53,6 @@ else:
 | 
	
		
			
				|  |  |  def _create_channel(target: str, options: Sequence[Tuple[str, str]],
 | 
	
		
			
				|  |  |                      channel_credentials: Optional[grpc.ChannelCredentials],
 | 
	
		
			
				|  |  |                      compression: Optional[grpc.Compression]) -> grpc.Channel:
 | 
	
		
			
				|  |  | -    if channel_credentials is None:
 | 
	
		
			
				|  |  | -        _LOGGER.debug("Defaulting to SSL channel credentials.")
 | 
	
		
			
				|  |  | -        credentials = grpc.ssl_channel_credentials()
 | 
	
		
			
				|  |  | -        return grpc.secure_channel(target,
 | 
	
		
			
				|  |  | -                                   credentials=credentials,
 | 
	
		
			
				|  |  | -                                   options=options,
 | 
	
		
			
				|  |  | -                                   compression=compression)
 | 
	
		
			
				|  |  |      if channel_credentials._credentials is grpc.experimental._insecure_channel_credentials:
 | 
	
		
			
				|  |  |          _LOGGER.debug(f"Creating insecure channel with options '{options}' " +
 | 
	
		
			
				|  |  |                        f"and compression '{compression}'")
 | 
	
	
		
			
				|  | @@ -136,7 +129,18 @@ class ChannelCache:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def get_channel(self, target: str, options: Sequence[Tuple[str, str]],
 | 
	
		
			
				|  |  |                      channel_credentials: Optional[grpc.ChannelCredentials],
 | 
	
		
			
				|  |  | +                    insecure: bool,
 | 
	
		
			
				|  |  |                      compression: Optional[grpc.Compression]) -> grpc.Channel:
 | 
	
		
			
				|  |  | +        if insecure and channel_credentials:
 | 
	
		
			
				|  |  | +            raise ValueError("The insecure option is mutually exclusive with " +
 | 
	
		
			
				|  |  | +                             "the channel_credentials option. Please use one " +
 | 
	
		
			
				|  |  | +                             "or the other.")
 | 
	
		
			
				|  |  | +        if insecure:
 | 
	
		
			
				|  |  | +            channel_credentials = grpc.experimental.insecure_channel_credentials(
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  | +        elif channel_credentials is None:
 | 
	
		
			
				|  |  | +            _LOGGER.debug("Defaulting to SSL channel credentials.")
 | 
	
		
			
				|  |  | +            channel_credentials = grpc.ssl_channel_credentials()
 | 
	
		
			
				|  |  |          key = (target, options, channel_credentials, compression)
 | 
	
		
			
				|  |  |          with self._lock:
 | 
	
		
			
				|  |  |              channel_data = self._mapping.get(key, None)
 | 
	
	
		
			
				|  | @@ -170,6 +174,7 @@ def unary_unary(
 | 
	
		
			
				|  |  |          response_deserializer: Optional[Callable[[bytes], Any]] = None,
 | 
	
		
			
				|  |  |          options: Sequence[Tuple[AnyStr, AnyStr]] = (),
 | 
	
		
			
				|  |  |          channel_credentials: Optional[grpc.ChannelCredentials] = None,
 | 
	
		
			
				|  |  | +        insecure: bool = False,
 | 
	
		
			
				|  |  |          call_credentials: Optional[grpc.CallCredentials] = None,
 | 
	
		
			
				|  |  |          compression: Optional[grpc.Compression] = None,
 | 
	
		
			
				|  |  |          wait_for_ready: Optional[bool] = None,
 | 
	
	
		
			
				|  | @@ -204,6 +209,9 @@ def unary_unary(
 | 
	
		
			
				|  |  |        channel_credentials: A credential applied to the whole channel, e.g. the
 | 
	
		
			
				|  |  |          return value of grpc.ssl_channel_credentials() or
 | 
	
		
			
				|  |  |          grpc.insecure_channel_credentials().
 | 
	
		
			
				|  |  | +      insecure: If True, specifies channel_credentials as
 | 
	
		
			
				|  |  | +        :term:`grpc.insecure_channel_credentials()`. This option is mutually
 | 
	
		
			
				|  |  | +        exclusive with the `channel_credentials` option.
 | 
	
		
			
				|  |  |        call_credentials: A call credential applied to each call individually,
 | 
	
		
			
				|  |  |          e.g. the output of grpc.metadata_call_credentials() or
 | 
	
		
			
				|  |  |          grpc.access_token_call_credentials().
 | 
	
	
		
			
				|  | @@ -222,7 +230,8 @@ def unary_unary(
 | 
	
		
			
				|  |  |        The response to the RPC.
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      channel = ChannelCache.get().get_channel(target, options,
 | 
	
		
			
				|  |  | -                                             channel_credentials, compression)
 | 
	
		
			
				|  |  | +                                             channel_credentials, insecure,
 | 
	
		
			
				|  |  | +                                             compression)
 | 
	
		
			
				|  |  |      multicallable = channel.unary_unary(method, request_serializer,
 | 
	
		
			
				|  |  |                                          response_deserializer)
 | 
	
		
			
				|  |  |      return multicallable(request,
 | 
	
	
		
			
				|  | @@ -241,6 +250,7 @@ def unary_stream(
 | 
	
		
			
				|  |  |          response_deserializer: Optional[Callable[[bytes], Any]] = None,
 | 
	
		
			
				|  |  |          options: Sequence[Tuple[AnyStr, AnyStr]] = (),
 | 
	
		
			
				|  |  |          channel_credentials: Optional[grpc.ChannelCredentials] = None,
 | 
	
		
			
				|  |  | +        insecure: bool = False,
 | 
	
		
			
				|  |  |          call_credentials: Optional[grpc.CallCredentials] = None,
 | 
	
		
			
				|  |  |          compression: Optional[grpc.Compression] = None,
 | 
	
		
			
				|  |  |          wait_for_ready: Optional[bool] = None,
 | 
	
	
		
			
				|  | @@ -274,6 +284,9 @@ def unary_stream(
 | 
	
		
			
				|  |  |          runtime) to configure the channel.
 | 
	
		
			
				|  |  |        channel_credentials: A credential applied to the whole channel, e.g. the
 | 
	
		
			
				|  |  |          return value of grpc.ssl_channel_credentials().
 | 
	
		
			
				|  |  | +      insecure: If True, specifies channel_credentials as
 | 
	
		
			
				|  |  | +        :term:`grpc.insecure_channel_credentials()`. This option is mutually
 | 
	
		
			
				|  |  | +        exclusive with the `channel_credentials` option.
 | 
	
		
			
				|  |  |        call_credentials: A call credential applied to each call individually,
 | 
	
		
			
				|  |  |          e.g. the output of grpc.metadata_call_credentials() or
 | 
	
		
			
				|  |  |          grpc.access_token_call_credentials().
 | 
	
	
		
			
				|  | @@ -292,7 +305,8 @@ def unary_stream(
 | 
	
		
			
				|  |  |        An iterator of responses.
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      channel = ChannelCache.get().get_channel(target, options,
 | 
	
		
			
				|  |  | -                                             channel_credentials, compression)
 | 
	
		
			
				|  |  | +                                             channel_credentials, insecure,
 | 
	
		
			
				|  |  | +                                             compression)
 | 
	
		
			
				|  |  |      multicallable = channel.unary_stream(method, request_serializer,
 | 
	
		
			
				|  |  |                                           response_deserializer)
 | 
	
		
			
				|  |  |      return multicallable(request,
 | 
	
	
		
			
				|  | @@ -312,6 +326,7 @@ def stream_unary(
 | 
	
		
			
				|  |  |          options: Sequence[Tuple[AnyStr, AnyStr]] = (),
 | 
	
		
			
				|  |  |          channel_credentials: Optional[grpc.ChannelCredentials] = None,
 | 
	
		
			
				|  |  |          call_credentials: Optional[grpc.CallCredentials] = None,
 | 
	
		
			
				|  |  | +        insecure: bool = False,
 | 
	
		
			
				|  |  |          compression: Optional[grpc.Compression] = None,
 | 
	
		
			
				|  |  |          wait_for_ready: Optional[bool] = None,
 | 
	
		
			
				|  |  |          timeout: Optional[float] = None,
 | 
	
	
		
			
				|  | @@ -347,6 +362,9 @@ def stream_unary(
 | 
	
		
			
				|  |  |        call_credentials: A call credential applied to each call individually,
 | 
	
		
			
				|  |  |          e.g. the output of grpc.metadata_call_credentials() or
 | 
	
		
			
				|  |  |          grpc.access_token_call_credentials().
 | 
	
		
			
				|  |  | +      insecure: If True, specifies channel_credentials as
 | 
	
		
			
				|  |  | +        :term:`grpc.insecure_channel_credentials()`. This option is mutually
 | 
	
		
			
				|  |  | +        exclusive with the `channel_credentials` option.
 | 
	
		
			
				|  |  |        compression: An optional value indicating the compression method to be
 | 
	
		
			
				|  |  |          used over the lifetime of the channel, e.g. grpc.Compression.Gzip.
 | 
	
		
			
				|  |  |        wait_for_ready: An optional flag indicating whether the RPC should fail
 | 
	
	
		
			
				|  | @@ -362,7 +380,8 @@ def stream_unary(
 | 
	
		
			
				|  |  |        The response to the RPC.
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      channel = ChannelCache.get().get_channel(target, options,
 | 
	
		
			
				|  |  | -                                             channel_credentials, compression)
 | 
	
		
			
				|  |  | +                                             channel_credentials, insecure,
 | 
	
		
			
				|  |  | +                                             compression)
 | 
	
		
			
				|  |  |      multicallable = channel.stream_unary(method, request_serializer,
 | 
	
		
			
				|  |  |                                           response_deserializer)
 | 
	
		
			
				|  |  |      return multicallable(request_iterator,
 | 
	
	
		
			
				|  | @@ -381,6 +400,7 @@ def stream_stream(
 | 
	
		
			
				|  |  |          response_deserializer: Optional[Callable[[bytes], Any]] = None,
 | 
	
		
			
				|  |  |          options: Sequence[Tuple[AnyStr, AnyStr]] = (),
 | 
	
		
			
				|  |  |          channel_credentials: Optional[grpc.ChannelCredentials] = None,
 | 
	
		
			
				|  |  | +        insecure: bool = False,
 | 
	
		
			
				|  |  |          call_credentials: Optional[grpc.CallCredentials] = None,
 | 
	
		
			
				|  |  |          compression: Optional[grpc.Compression] = None,
 | 
	
		
			
				|  |  |          wait_for_ready: Optional[bool] = None,
 | 
	
	
		
			
				|  | @@ -417,6 +437,9 @@ def stream_stream(
 | 
	
		
			
				|  |  |        call_credentials: A call credential applied to each call individually,
 | 
	
		
			
				|  |  |          e.g. the output of grpc.metadata_call_credentials() or
 | 
	
		
			
				|  |  |          grpc.access_token_call_credentials().
 | 
	
		
			
				|  |  | +      insecure: If True, specifies channel_credentials as
 | 
	
		
			
				|  |  | +        :term:`grpc.insecure_channel_credentials()`. This option is mutually
 | 
	
		
			
				|  |  | +        exclusive with the `channel_credentials` option.
 | 
	
		
			
				|  |  |        compression: An optional value indicating the compression method to be
 | 
	
		
			
				|  |  |          used over the lifetime of the channel, e.g. grpc.Compression.Gzip.
 | 
	
		
			
				|  |  |        wait_for_ready: An optional flag indicating whether the RPC should fail
 | 
	
	
		
			
				|  | @@ -432,7 +455,8 @@ def stream_stream(
 | 
	
		
			
				|  |  |        An iterator of responses.
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      channel = ChannelCache.get().get_channel(target, options,
 | 
	
		
			
				|  |  | -                                             channel_credentials, compression)
 | 
	
		
			
				|  |  | +                                             channel_credentials, insecure,
 | 
	
		
			
				|  |  | +                                             compression)
 | 
	
		
			
				|  |  |      multicallable = channel.stream_stream(method, request_serializer,
 | 
	
		
			
				|  |  |                                            response_deserializer)
 | 
	
		
			
				|  |  |      return multicallable(request_iterator,
 |