Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/google/api_core/operations_v1/pagers.py: 47%

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

17 statements  

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

2# Copyright 2020 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 Callable, 

18 Iterator, 

19 Sequence, 

20 Tuple, 

21) 

22 

23from google.longrunning import operations_pb2 

24from google.api_core.operations_v1.pagers_base import ListOperationsPagerBase 

25 

26 

27class ListOperationsPager(ListOperationsPagerBase): 

28 """A pager for iterating through ``list_operations`` requests. 

29 

30 This class thinly wraps an initial 

31 :class:`google.longrunning.operations_pb2.ListOperationsResponse` object, and 

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

33 ``operations`` field. 

34 

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

36 ``ListOperations`` requests and continue to iterate 

37 through the ``operations`` field on the 

38 corresponding responses. 

39 

40 All the usual :class:`google.longrunning.operations_pb2.ListOperationsResponse` 

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

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

43 """ 

44 

45 def __init__( 

46 self, 

47 method: Callable[..., operations_pb2.ListOperationsResponse], 

48 request: operations_pb2.ListOperationsRequest, 

49 response: operations_pb2.ListOperationsResponse, 

50 *, 

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

52 ): 

53 super().__init__( 

54 method=method, request=request, response=response, metadata=metadata 

55 ) 

56 

57 @property 

58 def pages(self) -> Iterator[operations_pb2.ListOperationsResponse]: 

59 yield self._response 

60 while self._response.next_page_token: 

61 self._request.page_token = self._response.next_page_token 

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

63 yield self._response 

64 

65 def __iter__(self) -> Iterator[operations_pb2.Operation]: 

66 for page in self.pages: 

67 yield from page.operations