qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kim van der Riet (JIRA)" <j...@apache.org>
Subject [jira] [Created] (PROTON-1835) [Python binding] Use of Python dict for AMQP maps does not allow derived or related keys of the same value
Date Wed, 25 Apr 2018 15:01:01 GMT
Kim van der Riet created PROTON-1835:
----------------------------------------

             Summary: [Python binding] Use of Python dict for AMQP maps does not allow derived
or related keys of the same value
                 Key: PROTON-1835
                 URL: https://issues.apache.org/jira/browse/PROTON-1835
             Project: Qpid Proton
          Issue Type: Bug
          Components: python-binding
            Reporter: Kim van der Riet


The AMQP map (expressed as a list) {{[binary(123), "hello", decimal128(123), "world"]}} cannot
be implemented in Python using the {{dict}} type. This happens because {{proton.decimal}}
is derived from {{bytes}}, and the dictionary treats them as the same value and causes the
first value to be overwritten by the second:
{noformat}
>>> import proton
>>> {b'123': 'hello', proton.decimal128(b'123'): 'world'}
{'123': 'world'}
{noformat}
Using the [] operator to add the values one at a time to an empty {{dict}} results in the
same outcome. Even using related classes (ie both derived from a common parent) don't work:
{noformat}
>>> import proton
>>> class mybin(bytes):
...     def __repr__(self):
...         return 'mybin(%s)' % bytes.__repr__(self)
... 
>>> {mybin(b'123'): 'hello', proton.decimal128(b'123'): 'world'}
{mybin('123'): 'world'}
{noformat}
This issue highlights that the Python {{dict}} type is not suitable for representing AMQP
maps. In addition, {{dict}}s do not guarantee ordering of the elements (although other Python
classes such as {{collections.OrderedDict}} do). Solving this issue will probably require
re-implementing the way AMQP maps are represented.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message