Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.10/site-packages/google/api_core/client_options.py: 27%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

26 statements  

1# Copyright 2019 Google LLC 

2# 

3# Licensed under the Apache License, Version 2.0 (the "License"); 

4# you may not use this file except in compliance with the License. 

5# You may obtain a copy of the License at 

6# 

7# http://www.apache.org/licenses/LICENSE-2.0 

8# 

9# Unless required by applicable law or agreed to in writing, software 

10# distributed under the License is distributed on an "AS IS" BASIS, 

11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

12# See the License for the specific language governing permissions and 

13# limitations under the License. 

14 

15"""Client options class. 

16 

17Client options provide a consistent interface for user options to be defined 

18across clients. 

19 

20You can pass a client options object to a client. 

21 

22.. code-block:: python 

23 

24 from google.api_core.client_options import ClientOptions 

25 from google.cloud.vision_v1 import ImageAnnotatorClient 

26 

27 def get_client_cert(): 

28 # code to load client certificate and private key. 

29 return client_cert_bytes, client_private_key_bytes 

30 

31 options = ClientOptions(api_endpoint="foo.googleapis.com", 

32 client_cert_source=get_client_cert) 

33 

34 client = ImageAnnotatorClient(client_options=options) 

35 

36You can also pass a mapping object. 

37 

38.. code-block:: python 

39 

40 from google.cloud.vision_v1 import ImageAnnotatorClient 

41 

42 client = ImageAnnotatorClient( 

43 client_options={ 

44 "api_endpoint": "foo.googleapis.com", 

45 "client_cert_source" : get_client_cert 

46 }) 

47 

48 

49""" 

50 

51from typing import Callable, Mapping, Optional, Sequence, Tuple 

52 

53 

54class ClientOptions(object): 

55 """Client Options used to set options on clients. 

56 

57 Args: 

58 api_endpoint (Optional[str]): The desired API endpoint, e.g., 

59 compute.googleapis.com 

60 client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): A callback 

61 which returns client certificate bytes and private key bytes both in 

62 PEM format. ``client_cert_source`` and ``client_encrypted_cert_source`` 

63 are mutually exclusive. 

64 client_encrypted_cert_source (Optional[Callable[[], Tuple[str, str, bytes]]]): 

65 A callback which returns client certificate file path, encrypted 

66 private key file path, and the passphrase bytes.``client_cert_source`` 

67 and ``client_encrypted_cert_source`` are mutually exclusive. 

68 quota_project_id (Optional[str]): A project name that a client's 

69 quota belongs to. 

70 credentials_file (Optional[str]): A path to a file storing credentials. 

71 ``credentials_file` and ``api_key`` are mutually exclusive. 

72 scopes (Optional[Sequence[str]]): OAuth access token override scopes. 

73 api_key (Optional[str]): Google API key. ``credentials_file`` and 

74 ``api_key`` are mutually exclusive. 

75 api_audience (Optional[str]): The intended audience for the API calls 

76 to the service that will be set when using certain 3rd party 

77 authentication flows. Audience is typically a resource identifier. 

78 If not set, the service endpoint value will be used as a default. 

79 An example of a valid ``api_audience`` is: "https://language.googleapis.com". 

80 universe_domain (Optional[str]): The desired universe domain. This must match 

81 the one in credentials. If not set, the default universe domain is 

82 `googleapis.com`. If both `api_endpoint` and `universe_domain` are set, 

83 then `api_endpoint` is used as the service endpoint. If `api_endpoint` is 

84 not specified, the format will be `{service}.{universe_domain}`. 

85 

86 Raises: 

87 ValueError: If both ``client_cert_source`` and ``client_encrypted_cert_source`` 

88 are provided, or both ``credentials_file`` and ``api_key`` are provided. 

89 """ 

90 

91 def __init__( 

92 self, 

93 api_endpoint: Optional[str] = None, 

94 client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, 

95 client_encrypted_cert_source: Optional[ 

96 Callable[[], Tuple[str, str, bytes]] 

97 ] = None, 

98 quota_project_id: Optional[str] = None, 

99 credentials_file: Optional[str] = None, 

100 scopes: Optional[Sequence[str]] = None, 

101 api_key: Optional[str] = None, 

102 api_audience: Optional[str] = None, 

103 universe_domain: Optional[str] = None, 

104 ): 

105 if client_cert_source and client_encrypted_cert_source: 

106 raise ValueError( 

107 "client_cert_source and client_encrypted_cert_source are mutually exclusive" 

108 ) 

109 if api_key and credentials_file: 

110 raise ValueError("api_key and credentials_file are mutually exclusive") 

111 self.api_endpoint = api_endpoint 

112 self.client_cert_source = client_cert_source 

113 self.client_encrypted_cert_source = client_encrypted_cert_source 

114 self.quota_project_id = quota_project_id 

115 self.credentials_file = credentials_file 

116 self.scopes = scopes 

117 self.api_key = api_key 

118 self.api_audience = api_audience 

119 self.universe_domain = universe_domain 

120 

121 def __repr__(self) -> str: 

122 return "ClientOptions: " + repr(self.__dict__) 

123 

124 

125def from_dict(options: Mapping[str, object]) -> ClientOptions: 

126 """Construct a client options object from a mapping object. 

127 

128 Args: 

129 options (collections.abc.Mapping): A mapping object with client options. 

130 See the docstring for ClientOptions for details on valid arguments. 

131 """ 

132 

133 client_options = ClientOptions() 

134 

135 for key, value in options.items(): 

136 if hasattr(client_options, key): 

137 setattr(client_options, key, value) 

138 else: 

139 raise ValueError("ClientOptions does not accept an option '" + key + "'") 

140 

141 return client_options