[
https://issues.apache.org/jira/browse/PROTON-2712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17713235#comment-17713235
]
Jiri Daněk commented on PROTON-2712:
------------------------------------
Using https://github.com/rh-messaging/cli-proton-python to print {{user_id}} on
a Message
{noformat}
% .venv/bin/python -c 'import proton; print(proton.VERSION)'
(0, 36, 0)
% .venv/bin/python -m cli_proton_python.sender --log-msgs=dict
{'address': None, 'annotations': {}, 'content': None, 'content_encoding':
'None', 'content_type': 'text/plain', 'correlation_id': None, 'creation_time':
0.000000, 'delivery_count': 0, 'durable': False, 'expiration': 0,
'first_acquirer': False, 'group_id': None, 'group_sequence': 0, 'id': None,
'inferred': False, 'instructions': None, 'priority': 4, 'properties': {},
'reply_to': None, 'reply_to_group_id': None, 'subject': None, 'ttl': 0,
'user_id': ''}
{noformat}
{noformat}
% python3 -c 'import proton; print(proton.VERSION)'
(0, 39, 0)
% python3 -m cli_proton_python.sender --log-msgs=dict
<frozen runpy>:128: RuntimeWarning: 'cli_proton_python.sender' found in
sys.modules after import of package 'cli_proton_python', but prior to execution
of 'cli_proton_python.sender'; this may result in unpredictable behaviour
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/sender.py",
line 614, in <module>
main()
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/sender.py",
line 607, in main
container.run()
File "/home/jdanek/.local/lib/python3.11/site-packages/proton/_reactor.py",
line 196, in run
while self.process():
^^^^^^^^^^^^^^
File "/home/jdanek/.local/lib/python3.11/site-packages/proton/_reactor.py",
line 259, in process
event.dispatch(handler)
File "/home/jdanek/.local/lib/python3.11/site-packages/proton/_events.py",
line 159, in dispatch
_dispatch(handler, type.method, self)
File "/home/jdanek/.local/lib/python3.11/site-packages/proton/_events.py",
line 130, in _dispatch
m(*args)
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/sender.py",
line 393, in on_timer_task
self.send_message()
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/sender.py",
line 263, in send_message
self.print_message(self.msg)
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/coreclient.py",
line 200, in print_message
utils.print_message(message, self.opts.log_msgs)
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/utils.py",
line 110, in print_message
print(formatter.Formatter(msg).print_message_as_dict())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/formatter.py",
line 203, in print_message_as_dict
int_result += "'%s': %s, " % (k, Formatter.format_object(int_value))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/formatter.py",
line 169, in format_object
return Formatter.format_string(in_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/formatter.py",
line 144, in format_string
int_res = "'%s'" % (Formatter.quote_string_escape(in_data))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/jdanek/repos/testing/cli/cli-proton-python/cli_proton_python/formatter.py",
line 299, in quote_string_escape
return in_data.replace("'", "\\'")
^^^^^^^^^^^^^^^
AttributeError: 'memoryview' object has no attribute 'replace'
{noformat}
When I inspect the {{message}} by running
{code}
print([f"{k}: {getattr(message,k)}" for k in dir(message)])
{code}
I get
{noformat}
[...]
'address: None',
'annotation_dict: AnnotationDict({})',
'annotations: AnnotationDict({})',
'body: None',
'clear: <bound method Message.clear of Message(priority=4)>',
'content_encoding: None',
'content_type: text/plain',
'correlation_id: None',
'creation_time: 0.0',
'decode: <bound method Message.decode of Message(priority=4)>',
'delivery_count: 0',
'durable: False',
'encode: <bound method Message.encode of Message(priority=4)>',
'expiry_time: 0.0',
'first_acquirer: False', 'group_id: None', 'group_sequence: 0',
'id: None',
'inferred: False',
'instruction_dict: None',
'instructions: None',
'priority: 4',
'properties: {}',
'recv: <bound method Message.recv of Message(priority=4)>',
'reply_to: None',
'reply_to_group_id: None',
'send: <bound method Message.send of Message(priority=4)>',
'subject: None',
'ttl: 0.0',
'user_id: <memory at 0x7f431e6a4040>']
{noformat}
whereas with prior versions of python-qpid-proton, I'd get
{noformat}
"user_id: b''"]
{noformat}
> [Python] Inconsistencies in binding type mappings
> -------------------------------------------------
>
> Key: PROTON-2712
> URL: https://issues.apache.org/jira/browse/PROTON-2712
> Project: Qpid Proton
> Issue Type: Bug
> Components: python-binding
> Affects Versions: proton-c-0.39.0
> Reporter: Andrew Stitcher
> Assignee: Andrew Stitcher
> Priority: Major
> Fix For: proton-c-0.39.0
>
>
> There were some inconsistencies and infelicities in the new cffi API bindings
> type mappings between python and C types
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]