Skip to content

Commit c7f5c98

Browse files
nikagradkropachev
authored andcommitted
protocol_features: construct ProtocolFeatures with keyword arguments
Make ProtocolFeatures.__init__ keyword-only and build it by keyword in parse_from_supported. Independently developed protocol extensions (SCYLLA_USE_METADATA_ID, TABLETS_ROUTING_V2) each add fields to this class; keyword construction lets them do so without conflicting over positional-argument order. All existing callers already used keywords.
1 parent 6e12577 commit c7f5c98

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

cassandra/protocol_features.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ class ProtocolFeatures(object):
1818
tablets_routing_v1 = False
1919
lwt_info = None
2020

21-
def __init__(self, rate_limit_error=None, shard_id=0, sharding_info=None, tablets_routing_v1=False, lwt_info=None):
21+
# Keyword-only so that independently developed protocol extensions can add
22+
# new fields without conflicting over positional-argument order.
23+
def __init__(self, *, rate_limit_error=None, shard_id=0, sharding_info=None, tablets_routing_v1=False, lwt_info=None):
2224
self.rate_limit_error = rate_limit_error
2325
self.shard_id = shard_id
2426
self.sharding_info = sharding_info
@@ -31,7 +33,8 @@ def parse_from_supported(supported):
3133
shard_id, sharding_info = ProtocolFeatures.parse_sharding_info(supported)
3234
tablets_routing_v1 = ProtocolFeatures.parse_tablets_info(supported)
3335
lwt_info = ProtocolFeatures.parse_lwt_info(supported)
34-
return ProtocolFeatures(rate_limit_error, shard_id, sharding_info, tablets_routing_v1, lwt_info)
36+
return ProtocolFeatures(rate_limit_error=rate_limit_error, shard_id=shard_id, sharding_info=sharding_info,
37+
tablets_routing_v1=tablets_routing_v1, lwt_info=lwt_info)
3538

3639
@staticmethod
3740
def maybe_parse_rate_limit_error(supported):

0 commit comments

Comments
 (0)