diff --git a/kafka/consumer/subscription_state.py b/kafka/consumer/subscription_state.py index 2540303f2..2a7810569 100644 --- a/kafka/consumer/subscription_state.py +++ b/kafka/consumer/subscription_state.py @@ -497,7 +497,7 @@ def is_fetchable(self): return not self.paused and self.has_valid_position -class ConsumerRebalanceListener(object, metaclass=abc.ABCMeta): +class ConsumerRebalanceListener(metaclass=abc.ABCMeta): """ A callback interface that the user can implement to trigger custom actions when the set of partitions assigned to the consumer changes. diff --git a/kafka/coordinator/assignors/abstract.py b/kafka/coordinator/assignors/abstract.py index a9ae5bbdf..10115190f 100644 --- a/kafka/coordinator/assignors/abstract.py +++ b/kafka/coordinator/assignors/abstract.py @@ -5,7 +5,7 @@ ) -class AbstractPartitionAssignor: +class AbstractPartitionAssignor(metaclass=abc.ABCMeta): """ Abstract assignor implementation which does some common grunt work (in particular collecting partition counts which are always needed in assignors). diff --git a/kafka/coordinator/base.py b/kafka/coordinator/base.py index 717ca5f29..f7ea75fa0 100644 --- a/kafka/coordinator/base.py +++ b/kafka/coordinator/base.py @@ -57,7 +57,7 @@ class UnjoinedGroupException(Errors.KafkaError): retriable = True -class BaseCoordinator: +class BaseCoordinator(metaclass=abc.ABCMeta): """ BaseCoordinator implements group management for a single group member by interacting with a designated Kafka broker (the coordinator). Group diff --git a/kafka/metrics/measurable.py b/kafka/metrics/measurable.py index fd5be1205..1abd222c3 100644 --- a/kafka/metrics/measurable.py +++ b/kafka/metrics/measurable.py @@ -1,7 +1,7 @@ import abc -class AbstractMeasurable: +class AbstractMeasurable(metaclass=abc.ABCMeta): """A measurable quantity that can be registered as a metric""" @abc.abstractmethod def measure(self, config, now):