Skip to content

Commit

Permalink
use count(None) to check non-None header/props vals
Browse files Browse the repository at this point in the history
  • Loading branch information
swathipil committed Nov 14, 2022
1 parent a16587d commit e9deb0a
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ def to_outgoing_amqp_message(annotated_message):
:rtype: pyamqp.Message
"""
message_header = None
if annotated_message.header and annotated_message.header._any(): # pylint: disable=protected-access
header_vals = annotated_message.header.values() if annotated_message.header else None
# If header and non-None header values, create outgoing header.
if annotated_message.header and header_vals.count(None) != len(header_vals):
message_header = Header(
delivery_count=annotated_message.header.delivery_count,
ttl=annotated_message.header.time_to_live,
Expand All @@ -93,7 +95,9 @@ def to_outgoing_amqp_message(annotated_message):
)

message_properties = None
if annotated_message.properties and annotated_message.properties._any(): # pylint: disable=protected-access
properties_vals = annotated_message.properties.values() if annotated_message.properties else None
# If properties and non-None properties values, create outgoing properties.
if annotated_message.properties and properties_vals.count(None) != len(properties_vals):
message_properties = Properties(
message_id=annotated_message.properties.message_id,
user_id=annotated_message.properties.user_id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,9 @@ def to_outgoing_amqp_message(annotated_message):
:rtype: uamqp.Message
"""
message_header = None
if annotated_message.header and annotated_message.header._any(): # pylint: disable=protected-access
header_vals = annotated_message.header.values() if annotated_message.header else None
# If header and non-None header values, create outgoing header.
if annotated_message.header and header_vals.count(None) != len(header_vals):
message_header = MessageHeader()
message_header.delivery_count = annotated_message.header.delivery_count
message_header.time_to_live = annotated_message.header.time_to_live
Expand All @@ -133,7 +135,9 @@ def to_outgoing_amqp_message(annotated_message):
message_header.priority = annotated_message.header.priority

message_properties = None
if annotated_message.properties and annotated_message.properties._any(): # pylint: disable=protected-access
properties_vals = annotated_message.properties.values() if annotated_message.properties else None
# If properties and non-None properties values, create outgoing properties.
if annotated_message.properties and properties_vals.count(None) != len(properties_vals):
message_properties = MessageProperties(
message_id=annotated_message.properties.message_id,
user_id=annotated_message.properties.user_id,
Expand Down
13 changes: 0 additions & 13 deletions sdk/eventhub/azure-eventhub/azure/eventhub/amqp/_amqp_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,12 +346,6 @@ def __init__(self, **kwargs):
self.durable = kwargs.get("durable")
self.priority = kwargs.get("priority")

def _any(self):
# Returns True for values 0, False, "", etc. unlike any()
for val in self.values():
if val is not None:
return True
return False

class AmqpMessageProperties(DictMixin):
# pylint: disable=too-many-instance-attributes
Expand Down Expand Up @@ -443,10 +437,3 @@ def __init__(self, **kwargs):
self.group_id = kwargs.get("group_id")
self.group_sequence = kwargs.get("group_sequence")
self.reply_to_group_id = kwargs.get("reply_to_group_id")

def _any(self):
# Returns True for values 0, False, "", etc. unlike any()
for val in self.values():
if val is not None:
return True
return False
46 changes: 31 additions & 15 deletions sdk/eventhub/azure-eventhub/tests/unittest/test_event_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,21 +173,37 @@ def test_amqp_message_str_repr():
assert str(message) == 'A'
assert 'AmqpAnnotatedMessage(body=A, body_type=data' in repr(message)

def test_amqp_message_header_properties_any():
header = AmqpMessageHeader()
header.first_acquirer = False
properties = AmqpMessageProperties()
properties.creation_time = 0

assert header._any()
assert properties._any()

header = AmqpMessageHeader()
properties = AmqpMessageProperties()
properties.message_id = ""

assert not header._any()
assert properties
def test_outgoing_amqp_message_header_properties(uamqp_transport):
if uamqp_transport:
amqp_transport = UamqpTransport
else:
amqp_transport = PyamqpTransport
ann_message = AmqpAnnotatedMessage(data_body=b'A')
ann_message.header = AmqpMessageHeader()
ann_message.properties = AmqpMessageProperties()
amqp_message = amqp_transport.to_outgoing_amqp_message(ann_message)

assert not amqp_message.header
assert not amqp_message.properties

ann_message = AmqpAnnotatedMessage(data_body=b'A')
ann_message.header = AmqpMessageHeader()
ann_message.properties = AmqpMessageProperties()
ann_message.header.first_acquirer = False
ann_message.properties.creation_time = 0
amqp_message = amqp_transport.to_outgoing_amqp_message(ann_message)

assert amqp_message.header
assert amqp_message.properties

ann_message = AmqpAnnotatedMessage(data_body=b'A')
ann_message.header = AmqpMessageHeader()
ann_message.properties = AmqpMessageProperties()
ann_message.properties.message_id = ""
amqp_message = amqp_transport.to_outgoing_amqp_message(ann_message)

assert not amqp_message.header
assert amqp_message.properties


def test_amqp_message_from_message(uamqp_transport):
Expand Down

0 comments on commit e9deb0a

Please sign in to comment.