Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/google/cloud/logging_v2/services/metrics_service_v2/pagers.py: 36%

45 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-12-08 06:45 +0000

1# -*- coding: utf-8 -*- 

2# Copyright 2023 Google LLC 

3# 

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

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

6# You may obtain a copy of the License at 

7# 

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

9# 

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

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

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

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

14# limitations under the License. 

15# 

16from typing import ( 

17 Any, 

18 AsyncIterator, 

19 Awaitable, 

20 Callable, 

21 Sequence, 

22 Tuple, 

23 Optional, 

24 Iterator, 

25) 

26 

27from google.cloud.logging_v2.types import logging_metrics 

28 

29 

30class ListLogMetricsPager: 

31 """A pager for iterating through ``list_log_metrics`` requests. 

32 

33 This class thinly wraps an initial 

34 :class:`google.cloud.logging_v2.types.ListLogMetricsResponse` object, and 

35 provides an ``__iter__`` method to iterate through its 

36 ``metrics`` field. 

37 

38 If there are more pages, the ``__iter__`` method will make additional 

39 ``ListLogMetrics`` requests and continue to iterate 

40 through the ``metrics`` field on the 

41 corresponding responses. 

42 

43 All the usual :class:`google.cloud.logging_v2.types.ListLogMetricsResponse` 

44 attributes are available on the pager. If multiple requests are made, only 

45 the most recent response is retained, and thus used for attribute lookup. 

46 """ 

47 

48 def __init__( 

49 self, 

50 method: Callable[..., logging_metrics.ListLogMetricsResponse], 

51 request: logging_metrics.ListLogMetricsRequest, 

52 response: logging_metrics.ListLogMetricsResponse, 

53 *, 

54 metadata: Sequence[Tuple[str, str]] = () 

55 ): 

56 """Instantiate the pager. 

57 

58 Args: 

59 method (Callable): The method that was originally called, and 

60 which instantiated this pager. 

61 request (google.cloud.logging_v2.types.ListLogMetricsRequest): 

62 The initial request object. 

63 response (google.cloud.logging_v2.types.ListLogMetricsResponse): 

64 The initial response object. 

65 metadata (Sequence[Tuple[str, str]]): Strings which should be 

66 sent along with the request as metadata. 

67 """ 

68 self._method = method 

69 self._request = logging_metrics.ListLogMetricsRequest(request) 

70 self._response = response 

71 self._metadata = metadata 

72 

73 def __getattr__(self, name: str) -> Any: 

74 return getattr(self._response, name) 

75 

76 @property 

77 def pages(self) -> Iterator[logging_metrics.ListLogMetricsResponse]: 

78 yield self._response 

79 while self._response.next_page_token: 

80 self._request.page_token = self._response.next_page_token 

81 self._response = self._method(self._request, metadata=self._metadata) 

82 yield self._response 

83 

84 def __iter__(self) -> Iterator[logging_metrics.LogMetric]: 

85 for page in self.pages: 

86 yield from page.metrics 

87 

88 def __repr__(self) -> str: 

89 return "{0}<{1!r}>".format(self.__class__.__name__, self._response) 

90 

91 

92class ListLogMetricsAsyncPager: 

93 """A pager for iterating through ``list_log_metrics`` requests. 

94 

95 This class thinly wraps an initial 

96 :class:`google.cloud.logging_v2.types.ListLogMetricsResponse` object, and 

97 provides an ``__aiter__`` method to iterate through its 

98 ``metrics`` field. 

99 

100 If there are more pages, the ``__aiter__`` method will make additional 

101 ``ListLogMetrics`` requests and continue to iterate 

102 through the ``metrics`` field on the 

103 corresponding responses. 

104 

105 All the usual :class:`google.cloud.logging_v2.types.ListLogMetricsResponse` 

106 attributes are available on the pager. If multiple requests are made, only 

107 the most recent response is retained, and thus used for attribute lookup. 

108 """ 

109 

110 def __init__( 

111 self, 

112 method: Callable[..., Awaitable[logging_metrics.ListLogMetricsResponse]], 

113 request: logging_metrics.ListLogMetricsRequest, 

114 response: logging_metrics.ListLogMetricsResponse, 

115 *, 

116 metadata: Sequence[Tuple[str, str]] = () 

117 ): 

118 """Instantiates the pager. 

119 

120 Args: 

121 method (Callable): The method that was originally called, and 

122 which instantiated this pager. 

123 request (google.cloud.logging_v2.types.ListLogMetricsRequest): 

124 The initial request object. 

125 response (google.cloud.logging_v2.types.ListLogMetricsResponse): 

126 The initial response object. 

127 metadata (Sequence[Tuple[str, str]]): Strings which should be 

128 sent along with the request as metadata. 

129 """ 

130 self._method = method 

131 self._request = logging_metrics.ListLogMetricsRequest(request) 

132 self._response = response 

133 self._metadata = metadata 

134 

135 def __getattr__(self, name: str) -> Any: 

136 return getattr(self._response, name) 

137 

138 @property 

139 async def pages(self) -> AsyncIterator[logging_metrics.ListLogMetricsResponse]: 

140 yield self._response 

141 while self._response.next_page_token: 

142 self._request.page_token = self._response.next_page_token 

143 self._response = await self._method(self._request, metadata=self._metadata) 

144 yield self._response 

145 

146 def __aiter__(self) -> AsyncIterator[logging_metrics.LogMetric]: 

147 async def async_generator(): 

148 async for page in self.pages: 

149 for response in page.metrics: 

150 yield response 

151 

152 return async_generator() 

153 

154 def __repr__(self) -> str: 

155 return "{0}<{1!r}>".format(self.__class__.__name__, self._response)