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

24 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2023-06-06 06:03 +0000

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 

51 

52class ClientOptions(object): 

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

54 

55 Args: 

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

57 compute.googleapis.com 

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

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

60 PEM format. ``client_cert_source`` and ``client_encrypted_cert_source`` 

61 are mutually exclusive. 

62 client_encrypted_cert_source (Optional[Callable[[], (str, str, bytes)]]): 

63 A callback which returns client certificate file path, encrypted 

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

65 and ``client_encrypted_cert_source`` are mutually exclusive. 

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

67 quota belongs to. 

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

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

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

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

72 ``api_key`` are mutually exclusive. 

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

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

75 authentication flows. Audience is typically a resource identifier. 

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

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

78 

79 Raises: 

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

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

82 """ 

83 

84 def __init__( 

85 self, 

86 api_endpoint=None, 

87 client_cert_source=None, 

88 client_encrypted_cert_source=None, 

89 quota_project_id=None, 

90 credentials_file=None, 

91 scopes=None, 

92 api_key=None, 

93 api_audience=None, 

94 ): 

95 if client_cert_source and client_encrypted_cert_source: 

96 raise ValueError( 

97 "client_cert_source and client_encrypted_cert_source are mutually exclusive" 

98 ) 

99 if api_key and credentials_file: 

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

101 self.api_endpoint = api_endpoint 

102 self.client_cert_source = client_cert_source 

103 self.client_encrypted_cert_source = client_encrypted_cert_source 

104 self.quota_project_id = quota_project_id 

105 self.credentials_file = credentials_file 

106 self.scopes = scopes 

107 self.api_key = api_key 

108 self.api_audience = api_audience 

109 

110 def __repr__(self): 

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

112 

113 

114def from_dict(options): 

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

116 

117 Args: 

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

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

120 """ 

121 

122 client_options = ClientOptions() 

123 

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

125 if hasattr(client_options, key): 

126 setattr(client_options, key, value) 

127 else: 

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

129 

130 return client_options