All checks were successful
continuous-integration/drone/push Build is passing
37 lines
850 B
Python
37 lines
850 B
Python
from __future__ import absolute_import
|
|
|
|
import abc
|
|
|
|
from kafka.metrics.stat import AbstractStat
|
|
from kafka.vendor.six import add_metaclass
|
|
|
|
|
|
@add_metaclass(abc.ABCMeta)
|
|
class AbstractCompoundStat(AbstractStat):
|
|
"""
|
|
A compound stat is a stat where a single measurement and associated
|
|
data structure feeds many metrics. This is the example for a
|
|
histogram which has many associated percentiles.
|
|
"""
|
|
def stats(self):
|
|
"""
|
|
Return list of NamedMeasurable
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
|
|
class NamedMeasurable(object):
|
|
__slots__ = ('_name', '_stat')
|
|
|
|
def __init__(self, metric_name, measurable_stat):
|
|
self._name = metric_name
|
|
self._stat = measurable_stat
|
|
|
|
@property
|
|
def name(self):
|
|
return self._name
|
|
|
|
@property
|
|
def stat(self):
|
|
return self._stat
|