1818 CounterValue , SummaryValue ,
1919 HistogramValue )
2020
21-
2221class BaseMetric (object ):
2322
2423 value_class = MetricValue
@@ -27,6 +26,8 @@ class BaseMetric(object):
2726
2827 TYPE = "untyped"
2928
29+ PARENT_METHODS = set ()
30+
3031 def __init__ (self , name , doc , labels = [], registry = None ):
3132 self ._name = name
3233 self ._doc = doc
@@ -45,7 +46,7 @@ def __repr__(self):
4546 return u"<{0}[{1}]: {2} samples>" .format (self .__class__ .__name__ , self ._name , len (self ._samples ))
4647
4748 def get_proxy (self ):
48- if self ._labelsnames :
49+ if self ._labelnames :
4950 raise RuntimeError ("You need to use labels" )
5051 return self .value_class (self , label_values = {})
5152
@@ -123,23 +124,35 @@ def get_samples(self):
123124 return self ._samples .values ()
124125
125126
127+ def __getattr__ (self , name ):
128+ if name in self .PARENT_METHODS :
129+ return getattr (self .get_proxy (), name )
130+
131+ raise AttributeError
132+ # return super(BaseMetric, self).__getattr__(name)
133+
134+
135+
136+
137+
138+
126139class Gauge (BaseMetric ):
127140
128141 TYPE = "gauge"
129142
130143 value_class = GaugeValue
131144
132- inc = property ( BaseMetric . get_proxy )
133- dec = property ( BaseMetric . get_proxy )
134- set = property ( BaseMetric . get_proxy )
145+ PARENT_METHODS = set (( 'inc' , 'dec' , 'set' , 'get' , 'track_inprogress' ,
146+ 'set_to_current_time' , 'time' , 'value' ) )
147+
135148
136149
137150class Counter (BaseMetric ):
138151 TYPE = "counter"
139152
140153 value_class = CounterValue
141154
142- inc = property ( BaseMetric . get_proxy )
155+ PARENT_METHODS = set (( 'inc' , 'get' , 'value' ) )
143156
144157
145158class Summary (BaseMetric ):
@@ -151,12 +164,12 @@ class Summary(BaseMetric):
151164
152165 NOT_ALLOWED_LABELS = set ('quantile' )
153166
167+ PARENT_METHODS = set (('observe' , 'value' , 'time' ))
168+
154169 def __init__ (self , name , doc , labels = [], quantiles = False , registry = None ):
155170 self ._quantiles = list (sorted (quantiles )) if quantiles else []
156171 super (Summary , self ).__init__ (name , doc , labels , registry )
157172
158- observe = property (BaseMetric .get_proxy )
159-
160173 @property
161174 def quantiles (self ):
162175 return self ._quantiles
@@ -193,12 +206,12 @@ class Histogram(BaseMetric):
193206
194207 value_class = HistogramValue
195208
209+ PARENT_METHODS = set (('observe' , 'value' , 'time' ))
210+
196211 def __init__ (self , name , doc , labels = [], buckets = DEFAULT_BUCKETS , registry = None ):
197212 self ._buckets = list (sorted (buckets )) if buckets else []
198213 super (Histogram , self ).__init__ (name , doc , labels , registry )
199214
200- observe = property (BaseMetric .get_proxy )
201-
202215 @property
203216 def buckets (self ):
204217 return self ._buckets
0 commit comments