Skip to content

Commit b406824

Browse files
authored
Use six.add_metaclass for py2/py3 compatible abc (#2551)
1 parent ca5592f commit b406824

File tree

10 files changed

+30
-22
lines changed

10 files changed

+30
-22
lines changed

kafka/consumer/subscription_state.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ def is_fetchable(self):
421421
return not self.paused and self.has_valid_position
422422

423423

424+
@six.add_metaclass(abc.ABCMeta)
424425
class ConsumerRebalanceListener(object):
425426
"""
426427
A callback interface that the user can implement to trigger custom actions
@@ -462,8 +463,6 @@ class ConsumerRebalanceListener(object):
462463
taking over that partition has their on_partitions_assigned() callback
463464
called to load the state.
464465
"""
465-
__metaclass__ = abc.ABCMeta
466-
467466
@abc.abstractmethod
468467
def on_partitions_revoked(self, revoked):
469468
"""

kafka/metrics/compound_stat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
import abc
44

55
from kafka.metrics.stat import AbstractStat
6+
from kafka.vendor.six import add_metaclass
67

78

9+
@add_metaclass(abc.ABCMeta)
810
class AbstractCompoundStat(AbstractStat):
911
"""
1012
A compound stat is a stat where a single measurement and associated
1113
data structure feeds many metrics. This is the example for a
1214
histogram which has many associated percentiles.
1315
"""
14-
__metaclass__ = abc.ABCMeta
15-
1616
def stats(self):
1717
"""
1818
Return list of NamedMeasurable

kafka/metrics/measurable_stat.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44

55
from kafka.metrics.measurable import AbstractMeasurable
66
from kafka.metrics.stat import AbstractStat
7+
from kafka.vendor.six import add_metaclass
78

89

10+
@add_metaclass(abc.ABCMeta)
911
class AbstractMeasurableStat(AbstractStat, AbstractMeasurable):
1012
"""
1113
An AbstractMeasurableStat is an AbstractStat that is also
1214
an AbstractMeasurable (i.e. can produce a single floating point value).
1315
This is the interface used for most of the simple statistics such
1416
as Avg, Max, Count, etc.
1517
"""
16-
__metaclass__ = abc.ABCMeta

kafka/metrics/metrics_reporter.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
import abc
44

5+
from kafka.vendor.six import add_metaclass
56

7+
8+
@add_metaclass(abc.ABCMeta)
69
class AbstractMetricsReporter(object):
710
"""
811
An abstract class to allow things to listen as new metrics
912
are created so they can be reported.
1013
"""
11-
__metaclass__ = abc.ABCMeta
12-
1314
@abc.abstractmethod
1415
def init(self, metrics):
1516
"""

kafka/metrics/stat.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
import abc
44

5+
from kafka.vendor.six import add_metaclass
56

7+
8+
@add_metaclass(abc.ABCMeta)
69
class AbstractStat(object):
710
"""
811
An AbstractStat is a quantity such as average, max, etc that is computed
912
off the stream of updates to a sensor
1013
"""
11-
__metaclass__ = abc.ABCMeta
12-
1314
@abc.abstractmethod
1415
def record(self, config, value, time_ms):
1516
"""

kafka/metrics/stats/sampled_stat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import abc
44

55
from kafka.metrics.measurable_stat import AbstractMeasurableStat
6+
from kafka.vendor.six import add_metaclass
67

78

9+
@add_metaclass(abc.ABCMeta)
810
class AbstractSampledStat(AbstractMeasurableStat):
911
"""
1012
An AbstractSampledStat records a single scalar value measured over
@@ -20,8 +22,6 @@ class AbstractSampledStat(AbstractMeasurableStat):
2022
Subclasses of this class define different statistics measured
2123
using this basic pattern.
2224
"""
23-
__metaclass__ = abc.ABCMeta
24-
2525
def __init__(self, initial_value):
2626
self._initial_value = initial_value
2727
self._samples = []

kafka/protocol/abstract.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import abc
44

5+
from kafka.vendor.six import add_metaclass
56

6-
class AbstractType(object):
7-
__metaclass__ = abc.ABCMeta
87

8+
@add_metaclass(abc.ABCMeta)
9+
class AbstractType(object):
910
@abc.abstractmethod
1011
def encode(cls, value): # pylint: disable=no-self-argument
1112
pass

kafka/protocol/api.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from kafka.protocol.struct import Struct
66
from kafka.protocol.types import Int16, Int32, String, Schema, Array, TaggedFields
77

8+
from kafka.vendor.six import add_metaclass
9+
810

911
class RequestHeader(Struct):
1012
SCHEMA = Schema(
@@ -49,9 +51,8 @@ class ResponseHeaderV2(Struct):
4951
)
5052

5153

54+
@add_metaclass(abc.ABCMeta)
5255
class Request(Struct):
53-
__metaclass__ = abc.ABCMeta
54-
5556
FLEXIBLE_VERSION = False
5657

5758
@abc.abstractproperty
@@ -92,8 +93,8 @@ def parse_response_header(self, read_buffer):
9293
return ResponseHeader.decode(read_buffer)
9394

9495

96+
@add_metaclass(abc.ABCMeta)
9597
class Response(Struct):
96-
__metaclass__ = abc.ABCMeta
9798

9899
@abc.abstractproperty
99100
def API_KEY(self):

kafka/record/abc.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from __future__ import absolute_import
2+
23
import abc
34

5+
from kafka.vendor.six import add_metaclass
6+
47

8+
@add_metaclass(abc.ABCMeta)
59
class ABCRecord(object):
6-
__metaclass__ = abc.ABCMeta
710
__slots__ = ()
811

912
@abc.abstractproperty
@@ -44,8 +47,8 @@ def headers(self):
4447
"""
4548

4649

50+
@add_metaclass(abc.ABCMeta)
4751
class ABCRecordBatchBuilder(object):
48-
__metaclass__ = abc.ABCMeta
4952
__slots__ = ()
5053

5154
@abc.abstractmethod
@@ -84,11 +87,11 @@ def build(self):
8487
"""
8588

8689

90+
@add_metaclass(abc.ABCMeta)
8791
class ABCRecordBatch(object):
8892
""" For v2 encapsulates a RecordBatch, for v0/v1 a single (maybe
8993
compressed) message.
9094
"""
91-
__metaclass__ = abc.ABCMeta
9295
__slots__ = ()
9396

9497
@abc.abstractmethod
@@ -98,8 +101,8 @@ def __iter__(self):
98101
"""
99102

100103

104+
@add_metaclass(abc.ABCMeta)
101105
class ABCRecords(object):
102-
__metaclass__ = abc.ABCMeta
103106
__slots__ = ()
104107

105108
@abc.abstractmethod

kafka/sasl/abc.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import abc
44

5+
from kafka.vendor.six import add_metaclass
56

6-
class SaslMechanism(object):
7-
__metaclass__ = abc.ABCMeta
87

8+
@add_metaclass(abc.ABCMeta)
9+
class SaslMechanism(object):
910
@abc.abstractmethod
1011
def __init__(self, **config):
1112
pass

0 commit comments

Comments
 (0)