diff options
author | Alex Couture-Beil <alex@mofo.ca> | 2015-01-09 16:34:59 -0800 |
---|---|---|
committer | Alex Couture-Beil <alex@mofo.ca> | 2015-01-10 18:57:36 -0800 |
commit | 01c1481248a00367b9395acb364821026bf6848c (patch) | |
tree | ff4db6497af1dd24610dff0a8efc8232908bcbfc /kafka/common.py | |
parent | 6603088f0adb4489d3031cfbbbf2ccd3d1dc55be (diff) | |
download | kafka-python-01c1481248a00367b9395acb364821026bf6848c.tar.gz |
Use reflection to avoid multiple errno definitions
Diffstat (limited to 'kafka/common.py')
-rw-r--r-- | kafka/common.py | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/kafka/common.py b/kafka/common.py index e4b3b1b..b7bb06c 100644 --- a/kafka/common.py +++ b/kafka/common.py @@ -1,3 +1,5 @@ +import inspect +import sys from collections import namedtuple ############### @@ -79,9 +81,6 @@ class KafkaError(RuntimeError): class BrokerResponseError(KafkaError): pass -class NoError(BrokerResponseError): - errno = 0 - message = 'SUCCESS' class UnknownError(BrokerResponseError): errno = -1 @@ -201,27 +200,16 @@ class KafkaConfigurationError(KafkaError): pass -kafka_errors = { - -1 : UnknownError, - 0 : NoError, - 1 : OffsetOutOfRangeError, - 2 : InvalidMessageError, - 3 : UnknownTopicOrPartitionError, - 4 : InvalidFetchRequestError, - 5 : LeaderNotAvailableError, - 6 : NotLeaderForPartitionError, - 7 : RequestTimedOutError, - 8 : BrokerNotAvailableError, - 9 : ReplicaNotAvailableError, - 10 : MessageSizeTooLargeError, - 11 : StaleControllerEpochError, - 12 : OffsetMetadataTooLargeError, - 13 : StaleLeaderEpochCodeError, -} +def _iter_broker_errors(): + for name, obj in inspect.getmembers(sys.modules[__name__]): + if inspect.isclass(obj) and issubclass(obj, BrokerResponseError) and obj != BrokerResponseError: + yield obj -def check_error(response): - error = kafka_errors.get(response.error, UnknownError) - if error is not NoError: - raise error(response) +kafka_errors = dict([(x.errno, x) for x in _iter_broker_errors()]) + +def check_error(response): + if response.error: + error_class = kafka_errors.get(response.error, UnknownError) + raise error_class(response) |