@@ -398,26 +398,7 @@ def count_exceptions(self, exception=Exception):
398
398
Increments the counter when an exception of the given
399
399
type is raised up out of the code.
400
400
'''
401
-
402
- class ExceptionCounter (object ):
403
- def __init__ (self , counter ):
404
- self ._counter = counter
405
-
406
- def __enter__ (self ):
407
- pass
408
-
409
- def __exit__ (self , typ , value , traceback ):
410
- if isinstance (value , exception ):
411
- self ._counter .inc ()
412
-
413
- def __call__ (self , f ):
414
- @wraps (f )
415
- def wrapped (* args , ** kwargs ):
416
- with self :
417
- return f (* args , ** kwargs )
418
- return wrapped
419
-
420
- return ExceptionCounter (self )
401
+ return _ExceptionCounter (self , exception )
421
402
422
403
def _samples (self ):
423
404
return (('' , {}, self ._value .get ()), )
@@ -490,51 +471,14 @@ def track_inprogress(self):
490
471
Increments the gauge when the code is entered,
491
472
and decrements when it is exited.
492
473
'''
493
-
494
- class InprogressTracker (object ):
495
- def __init__ (self , gauge ):
496
- self ._gauge = gauge
497
-
498
- def __enter__ (self ):
499
- self ._gauge .inc ()
500
-
501
- def __exit__ (self , typ , value , traceback ):
502
- self ._gauge .dec ()
503
-
504
- def __call__ (self , f ):
505
- @wraps (f )
506
- def wrapped (* args , ** kwargs ):
507
- with self :
508
- return f (* args , ** kwargs )
509
- return wrapped
510
-
511
- return InprogressTracker (self )
474
+ return _InprogressTracker (self )
512
475
513
476
def time (self ):
514
477
'''Time a block of code or function, and set the duration in seconds.
515
478
516
479
Can be used as a function decorator or context manager.
517
480
'''
518
-
519
- class Timer (object ):
520
- def __init__ (self , gauge ):
521
- self ._gauge = gauge
522
-
523
- def __enter__ (self ):
524
- self ._start = time .time ()
525
-
526
- def __exit__ (self , typ , value , traceback ):
527
- # Time can go backwards.
528
- self ._gauge .set (max (time .time () - self ._start , 0 ))
529
-
530
- def __call__ (self , f ):
531
- @wraps (f )
532
- def wrapped (* args , ** kwargs ):
533
- with self :
534
- return f (* args , ** kwargs )
535
- return wrapped
536
-
537
- return Timer (self )
481
+ return _GaugeTimer (self )
538
482
539
483
def set_function (self , f ):
540
484
'''Call the provided function to return the Gauge value.
@@ -598,26 +542,7 @@ def time(self):
598
542
599
543
Can be used as a function decorator or context manager.
600
544
'''
601
-
602
- class Timer (object ):
603
- def __init__ (self , summary ):
604
- self ._summary = summary
605
-
606
- def __enter__ (self ):
607
- self ._start = time .time ()
608
-
609
- def __exit__ (self , typ , value , traceback ):
610
- # Time can go backwards.
611
- self ._summary .observe (max (time .time () - self ._start , 0 ))
612
-
613
- def __call__ (self , f ):
614
- @wraps (f )
615
- def wrapped (* args , ** kwargs ):
616
- with self :
617
- return f (* args , ** kwargs )
<
A3D4
code>618
- return wrapped
619
-
620
- return Timer (self )
545
+ return _SummaryTimer (self )
621
546
622
547
def _samples (self ):
623
548
return (
@@ -707,26 +632,7 @@ def time(self):
707
632
708
633
Can be used as a function decorator or context manager.
709
634
'''
710
-
711
- class Timer (object ):
712
- def __init__ (self , histogram ):
713
- self ._histogram = histogram
714
-
715
- def __enter__ (self ):
716
- self ._start = time .time ()
717
-
718
- def __exit__ (self , typ , value , traceback ):
719
- # Time can go backwards.
720
- self ._histogram .observe (max (time .time () - self ._start , 0 ))
721
-
722
- def __call__ (self , f ):
723
- @wraps (f )
724
- def wrapped (* args , ** kwargs ):
725
- with self :
726
- return f (* args , ** kwargs )
727
- return wrapped
728
-
729
- return Timer (self )
635
+ return _HistogramTimer (self )
730
636
731
637
def _samples (self ):
732
638
samples = []
@@ -738,3 +644,97 @@ def _samples(self):
738
644
samples .append (('_sum' , {}, self ._sum .get ()))
739
645
return tuple (samples )
740
646
647
+
648
+ class _HistogramTimer (object ):
649
+ def __init__ (self , histogram ):
650
+ self ._histogram = histogram
651
+
652
+ def __enter__ (self ):
653
+ self ._start = time .time ()
654
+
655
+ def __exit__ (self , typ , value , traceback ):
656
+ # Time can go backwards.
657
+ self ._histogram .observe (max (time .time () - self ._start , 0 ))
658
+
659
+ def __call__ (self , f ):
660
+ @wraps (f )
661
+ def wrapped (* args , ** kwargs ):
662
+ with self :
663
+ return f (* args , ** kwargs )
664
+ return wrapped
665
+
666
+
667
+ class _ExceptionCounter (object ):
668
+ def __init__ (self , counter , exception ):
669
+ self ._counter = counter
670
+ self ._exception = exception
671
+
672
+ def __enter__ (self ):
673
+ pass
674
+
675
+ def __exit__ (self , typ , value , traceback ):
676
+ if isinstance (value , self ._exception ):
677
+ self ._counter .inc ()
678
+
679
+ def __call__ (self , f ):
680
+ @wraps (f )
681
+ def wrapped (* args , ** kwargs ):
682
+ with self :
683
+ return f (* args , ** kwargs )
684
+ return wrapped
685
+
686
+
687
+ class _InprogressTracker (object ):
688
+ def __init__ (self , gauge ):
689
+ self ._gauge = gauge
690
+
691
+ def __enter__ (self ):
692
+ self ._gauge .inc ()
693
+
694
+ def __exit__ (self , typ , value , traceback ):
695
+ self ._gauge .dec ()
696
+
697
+ def __call__ (self , f ):
698
+ @wraps (f )
699
+ def wrapped (* args , ** kwargs ):
700
+ with self :
701
+ return f (* args , ** kwargs )
702
+ return wrapped
703
+
704
+
705
+ class _SummaryTimer (object ):
706
+ def __init__ (self , summary ):
707
+ self ._summary = summary
708
+
709
+ def __enter__ (self ):
710
+ self ._start = time .time ()
711
+
712
+ def __exit__ (self , typ , value , traceback ):
713
+ # Time can go backwards.
714
+ self ._summary .observe (max (time .time () - self ._start , 0 ))
715
+
716
+ def __call__ (self , f ):
717
+ @wraps (f )
718
+ def wrapped (* args , ** kwargs ):
719
+ with self :
720
+ return f (* args , ** kwargs )
721
+ return wrapped
722
+
723
+
724
+ class _GaugeTimer (object ):
725
+ def __init__ (self , gauge ):
726
+ self ._gauge = gauge
727
+
728
+ def __enter__ (self ):
729
+ self ._start = time .time ()
730
+
731
+ def __exit__ (self , typ , value , traceback ):
732
+ # Time can go backwards.
733
+ self ._gauge .set (max (time .time () - self ._start , 0 ))
734
+
735
+ def __call__ (self , f ):
736
+ @wraps (f )
737
+ def wrapped (* args , ** kwargs ):
738
+ with self :
739
+ return f (* args , ** kwargs )
740
+ return wrapped
0 commit comments