22import time
33import types
44from typing import (
5- Any , Callable , Dict , Iterable , Optional , Sequence , Type , TypeVar ,
5+ Any , Callable , Dict , Iterable , Optional , Sequence , Type , TypeVar , Union ,
66)
77
88from . import values # retain this import style for testability
@@ -337,15 +337,15 @@ def f():
337337 _MULTIPROC_MODES = frozenset (('min' , 'max' , 'livesum' , 'liveall' , 'all' ))
338338
339339 def __init__ (self ,
340- name ,
341- documentation ,
342- labelnames = (),
343- namespace = '' ,
344- subsystem = '' ,
345- unit = '' ,
346- registry = REGISTRY ,
347- _labelvalues = None ,
348- multiprocess_mode = 'all' ,
340+ name : str ,
341+ documentation : str ,
342+ labelnames : Iterable [ str ] = (),
343+ namespace : str = '' ,
344+ subsystem : str = '' ,
345+ unit : str = '' ,
346+ registry : Optional [ CollectorRegistry ] = REGISTRY ,
347+ _labelvalues : Optional [ Sequence [ str ]] = None ,
348+ multiprocess_mode : str = 'all' ,
349349 ):
350350 self ._multiprocess_mode = multiprocess_mode
351351 if multiprocess_mode not in self ._MULTIPROC_MODES :
@@ -362,32 +362,32 @@ def __init__(self,
362362 )
363363 self ._kwargs ['multiprocess_mode' ] = self ._multiprocess_mode
364364
365- def _metric_init (self ):
365+ def _metric_init (self ) -> None :
366366 self ._value = values .ValueClass (
367367 self ._type , self ._name , self ._name , self ._labelnames , self ._labelvalues ,
368368 multiprocess_mode = self ._multiprocess_mode
369369 )
370370
371- def inc (self , amount = 1 ) :
371+ def inc (self , amount : float = 1 ) -> None :
372372 """Increment gauge by the given amount."""
373373 self ._raise_if_not_observable ()
374374 self ._value .inc (amount )
375375
376- def dec (self , amount = 1 ) :
376+ def dec (self , amount : float = 1 ) -> None :
377377 """Decrement gauge by the given amount."""
378378 self ._raise_if_not_observable ()
379379 self ._value .inc (- amount )
380380
381- def set (self , value ) :
381+ def set (self , value : float ) -> None :
382382 """Set gauge to the given value."""
383383 self ._raise_if_not_observable ()
384384 self ._value .set (float (value ))
385385
386- def set_to_current_time (self ):
386+ def set_to_current_time (self ) -> None :
387387 """Set gauge to the current unixtime."""
388388 self .set (time .time ())
389389
390- def track_inprogress (self ):
390+ def track_inprogress (self ) -> InprogressTracker :
391391 """Track inprogress blocks of code or functions.
392392
393393 Can be used as a function decorator or context manager.
@@ -397,14 +397,14 @@ def track_inprogress(self):
397397 self ._raise_if_not_observable ()
398398 return InprogressTracker (self )
399399
400- def time (self ):
400+ def time (self ) -> Timer :
401401 """Time a block of code or function, and set the duration in seconds.
402402
403403 Can be used as a function decorator or context manager.
404404 """
405405 return Timer (self , 'set' )
406406
407- def set_function (self , f ) :
407+ def set_function (self , f : Callable [[], float ]) -> None :
408408 """Call the provided function to return the Gauge value.
409409
410410 The function must return a float, and may be called from
@@ -413,10 +413,10 @@ def set_function(self, f):
413413
414414 self ._raise_if_not_observable ()
415415
416- def samples (self ) -> Iterable [Sample ]:
416+ def samples (_ : Gauge ) -> Iterable [Sample ]:
417417 return (Sample ('' , {}, float (f ()), None , None ),)
418418
419- self ._child_samples = types .MethodType (samples , self )
419+ self ._child_samples = types .MethodType (samples , self ) # type: ignore
420420
421421 def _child_samples (self ) -> Iterable [Sample ]:
422422 return (Sample ('' , {}, self ._value .get (), None , None ),)
@@ -455,13 +455,13 @@ def create_response(request):
455455 _type = 'summary'
456456 _reserved_labelnames = ['quantile' ]
457457
458- def _metric_init (self ):
458+ def _metric_init (self ) -> None :
459459 self ._count = values .ValueClass (self ._type , self ._name , self ._name + '_count' , self ._labelnames ,
460460 self ._labelvalues )
461461 self ._sum = values .ValueClass (self ._type , self ._name , self ._name + '_sum' , self ._labelnames , self ._labelvalues )
462462 self ._created = time .time ()
463463
464- def observe (self , amount ) :
464+ def observe (self , amount : float ) -> None :
465465 """Observe the given amount.
466466
467467 The amount is usually positive or zero. Negative values are
@@ -475,7 +475,7 @@ def observe(self, amount):
475475 self ._count .inc (1 )
476476 self ._sum .inc (amount )
477477
478- def time (self ):
478+ def time (self ) -> Timer :
479479 """Time a block of code or function, and observe the duration in seconds.
480480
481481 Can be used as a function decorator or context manager.
@@ -530,15 +530,15 @@ def create_response(request):
530530 DEFAULT_BUCKETS = (.005 , .01 , .025 , .05 , .075 , .1 , .25 , .5 , .75 , 1.0 , 2.5 , 5.0 , 7.5 , 10.0 , INF )
531531
532532 def __init__ (self ,
533- name ,
534- documentation ,
535- labelnames = (),
536- namespace = '' ,
537- subsystem = '' ,
538- unit = '' ,
539- registry = REGISTRY ,
540- _labelvalues = None ,
541- buckets = DEFAULT_BUCKETS ,
533+ name : str ,
534+ documentation : str ,
535+ labelnames : Iterable [ str ] = (),
536+ namespace : str = '' ,
537+ subsystem : str = '' ,
538+ unit : str = '' ,
539+ registry : Optional [ CollectorRegistry ] = REGISTRY ,
540+ _labelvalues : Optional [ Sequence [ str ]] = None ,
541+ buckets : Sequence [ Union [ float , int , str ]] = DEFAULT_BUCKETS ,
542542 ):
543543 self ._prepare_buckets (buckets )
544544 super ().__init__ (
@@ -553,8 +553,8 @@ def __init__(self,
553553 )
554554 self ._kwargs ['buckets' ] = buckets
555555
556- def _prepare_buckets (self , buckets ) :
557- buckets = [float (b ) for b in buckets ]
556+ def _prepare_buckets (self , source_buckets : Sequence [ Union [ float , int , str ]]) -> None :
557+ buckets = [float (b ) for b in source_buckets ]
558558 if buckets != sorted (buckets ):
559559 # This is probably an error on the part of the user,
560560 # so raise rather than sorting for them.
@@ -565,7 +565,7 @@ def _prepare_buckets(self, buckets):
565565 raise ValueError ('Must have at least two buckets' )
566566 self ._upper_bounds = buckets
567567
568- def _metric_init (self ):
568+ def _metric_init (self ) -> None :
569569 self ._buckets = []
570570 self ._created = time .time ()
571571 bucket_labelnames = self ._labelnames + ('le' ,)
@@ -579,7 +579,7 @@ def _metric_init(self):
579579 self ._labelvalues + (floatToGoString (b ),))
580580 )
581581
582- def observe (self , amount , exemplar = None ):
582+ def observe (self , amount : float , exemplar : Optional [ Dict [ str , str ]] = None ) -> None :
583583 """Observe the given amount.
584584
585585 The amount is usually positive or zero. Negative values are
@@ -599,7 +599,7 @@ def observe(self, amount, exemplar=None):
599599 self ._buckets [i ].set_exemplar (Exemplar (exemplar , amount , time .time ()))
600600 break
601601
602- def time (self ):
602+ def time (self ) -> Timer :
603603 """Time a block of code or function, and observe the duration in seconds.
604604
605605 Can be used as a function decorator or context manager.
0 commit comments