@@ -49,10 +49,11 @@ def list_entries(
4949 * ,
5050 filter_ = None ,
5151 order_by = None ,
52+ max_results = None ,
5253 page_size = None ,
5354 page_token = None ,
5455 ):
55- """Return a page of log entry resources.
56+ """Return a generator of log entry resources.
5657
5758 Args:
5859 resource_names (Sequence[str]): Names of one or more parent resources
@@ -69,14 +70,16 @@ def list_entries(
6970 https://cloud.google.com/logging/docs/view/advanced_filters
7071 order_by (str) One of :data:`~logging_v2.ASCENDING`
7172 or :data:`~logging_v2.DESCENDING`.
72- page_size (int): maximum number of entries to return, If not passed,
73- defaults to a value set by the API.
74- page_token (str): opaque marker for the next "page" of entries. If not
75- passed, the API will return the first page of
76- entries.
77-
73+ max_results (Optional[int]):
74+ Optional. The maximum number of entries to return.
75+ Non-positive values are treated as 0. If None, uses API defaults.
76+ page_size (int): number of entries to fetch in each API call. Although
77+ requests are paged internally, logs are returned by the generator
78+ one at a time. If not passed, defaults to a value set by the API.
79+ page_token (str): opaque marker for the starting "page" of entries. If not
80+ passed, the API will return the first page of entries.
7881 Returns:
79- Iterator [~logging_v2.LogEntry]
82+ Generator [~logging_v2.LogEntry]
8083 """
8184 # full resource names are expected by the API
8285 resource_names = resource_names
@@ -89,19 +92,27 @@ def list_entries(
8992 )
9093
9194 response = self ._gapic_api .list_log_entries (request = request )
92- page_iter = iter (response )
95+ log_iter = iter (response )
9396
9497 # We attach a mutable loggers dictionary so that as Logger
9598 # objects are created by entry_from_resource, they can be
9699 # re-used by other log entries from the same logger.
97100 loggers = {}
98101
99- def log_entries_pager (page_iter ):
100- for page in page_iter :
101- log_entry_dict = _parse_log_entry (LogEntryPB .pb (page ))
102+ if max_results is not None and max_results < 0 :
103+ raise ValueError ("max_results must be positive" )
104+
105+ # create generator
106+ def log_entries_pager (log_iter ):
107+ i = 0
108+ for entry in log_iter :
109+ if max_results is not None and i >= max_results :
110+ break
111+ log_entry_dict = _parse_log_entry (LogEntryPB .pb (entry ))
102112 yield entry_from_resource (log_entry_dict , self ._client , loggers = loggers )
113+ i += 1
103114
104- return log_entries_pager (page_iter )
115+ return log_entries_pager (log_iter )
105116
106117 def write_entries (
107118 self ,
@@ -175,7 +186,7 @@ def __init__(self, gapic_api, client):
175186 self ._gapic_api = gapic_api
176187 self ._client = client
177188
178- def list_sinks (self , parent , * , page_size = 0 , page_token = None ):
189+ def list_sinks (self , parent , * , max_results = None , page_size = None , page_token = None ):
179190 """List sinks for the parent resource.
180191
181192 Args:
@@ -187,27 +198,37 @@ def list_sinks(self, parent, *, page_size=0, page_token=None):
187198 "organizations/[ORGANIZATION_ID]"
188199 "billingAccounts/[BILLING_ACCOUNT_ID]"
189200 "folders/[FOLDER_ID]".
190- page_size (Optional[int]): Maximum number of sinks to return, If not passed,
191- defaults to a value set by the API.
192- page_token (Optional[str]): Opaque marker for the next "page" of sinks. If not
193- passed, the API will return the first page of
194- sinks.
201+ max_results (Optional[int]):
202+ Optional. The maximum number of entries to return.
203+ Non-positive values are treated as 0. If None, uses API defaults.
204+ page_size (int): number of entries to fetch in each API call. Although
205+ requests are paged internally, logs are returned by the generator
206+ one at a time. If not passed, defaults to a value set by the API.
207+ page_token (str): opaque marker for the starting "page" of entries. If not
208+ passed, the API will return the first page of entries.
195209
196210 Returns:
197- Iterator [~logging_v2.Sink]
211+ Generator [~logging_v2.Sink]
198212 """
199213 request = ListSinksRequest (
200214 parent = parent , page_size = page_size , page_token = page_token
201215 )
202216 response = self ._gapic_api .list_sinks (request )
203- page_iter = iter (response )
217+ sink_iter = iter (response )
218+
219+ if max_results is not None and max_results < 0 :
220+ raise ValueError ("max_results must be positive" )
204221
205- def sinks_pager (page_iter ):
206- for page in page_iter :
222+ def sinks_pager (sink_iter ):
223+ i = 0
224+ for entry in sink_iter :
225+ if max_results is not None and i >= max_results :
226+ break
207227 # Convert the GAPIC sink type into the handwritten `Sink` type
208- yield Sink .from_api_repr (LogSink .to_dict (page ), client = self ._client )
228+ yield Sink .from_api_repr (LogSink .to_dict (entry ), client = self ._client )
229+ i += 1
209230
210- return sinks_pager (page_iter )
231+ return sinks_pager (sink_iter )
211232
212233 def sink_create (
213234 self , parent , sink_name , filter_ , destination , * , unique_writer_identity = False
@@ -347,33 +368,47 @@ def __init__(self, gapic_api, client):
347368 self ._gapic_api = gapic_api
348369 self ._client = client
349370
350- def list_metrics (self , project , * , page_size = 0 , page_token = None ):
371+ def list_metrics (
372+ self , project , * , max_results = None , page_size = None , page_token = None
373+ ):
351374 """List metrics for the project associated with this client.
352375
353376 Args:
354377 project (str): ID of the project whose metrics are to be listed.
355- page_size (int): Maximum number of metrics to return, If not passed,
356- defaults to a value set by the API.
357- page_token (str): Opaque marker for the next "page" of metrics. If not
358- passed, the API will return the first page of
359- sinks.
378+ max_results (Optional[int]):
379+ Optional. The maximum number of entries to return.
380+ Non-positive values are treated as 0. If None, uses API defaults.
381+ page_size (int): number of entries to fetch in each API call. Although
382+ requests are paged internally, logs are returned by the generator
383+ one at a time. If not passed, defaults to a value set by the API.
384+ page_token (str): opaque marker for the starting "page" of entries. If not
385+ passed, the API will return the first page of entries.
360386
361387 Returns:
362- Iterable [logging_v2.Metric]: Iterable of metrics.
388+ Generator [logging_v2.Metric]
363389 """
364390 path = f"projects/{ project } "
365391 request = ListLogMetricsRequest (
366392 parent = path , page_size = page_size , page_token = page_token ,
367393 )
368394 response = self ._gapic_api .list_log_metrics (request = request )
369- page_iter = iter (response )
395+ metric_iter = iter (response )
396+
397+ if max_results is not None and max_results < 0 :
398+ raise ValueError ("max_results must be positive" )
370399
371- def metrics_pager (page_iter ):
372- for page in page_iter :
400+ def metrics_pager (metric_iter ):
401+ i = 0
402+ for entry in metric_iter :
403+ if max_results is not None and i >= max_results :
404+ break
373405 # Convert GAPIC metrics type into handwritten `Metric` type
374- yield Metric .from_api_repr (LogMetric .to_dict (page ), client = self ._client )
406+ yield Metric .from_api_repr (
407+ LogMetric .to_dict (entry ), client = self ._client
408+ )
409+ i += 1
375410
376- return metrics_pager (page_iter )
411+ return metrics_pager (metric_iter )
377412
378413 def metric_create (self , project , metric_name , filter_ , description ):
379414 """Create a metric resource.
0 commit comments