Skip to content
Discussions/App Development/Dazl Library - Da-Marketplace Integration - unhashable type: 'dict'Forum ↗

Dazl Library - Da-Marketplace Integration - unhashable type: 'dict'

App Development6 posts251 views1 likesLast activity Nov 2021
LU
Luis_AlmeidaOP
Nov 2021

I wrote a python integration to obtain data from an external API with DA Marketplace using the Dazl library and I’m getting the following error log:

Traceback (most recent call last):
  File ".../bot.py", line 41, in <module>
    asyncio.run(main())
  File "/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File ".../bot.py", line 23, in main
    async for event in stream.events():
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/aio/__init__.py", line 134, in events
    async for item in self.items():
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/grpc/conn_aio.py", line 692, in items
    async for event in self._acs_events(tx_filter_pb):
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/grpc/conn_aio.py", line 740, in _acs_events
    c_evt = await self.conn.codec.decode_created_event(event)
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/grpc/codec_aio.py", line 242, in decode_created_event
    cdata = await self.decode_value(con(cid.value_type), event.create_arguments)
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/grpc/codec_aio.py", line 338, in decode_value
    return await self._loader.do_with_retry(
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/aio/pkgloader.py", line 76, in do_with_retry
    return fn()
  File "/usr/local/lib/python3.9/site-packages/dazl/ledger/grpc/codec_aio.py", line 339, in <lambda>
    lambda: self._decode_context.convert(item_type, obj)
  File "/usr/local/lib/python3.9/site-packages/dazl/values/context.py", line 72, in convert
    return self.mapper.data_record(self, dt, dt.record, obj)
  File "/usr/local/lib/python3.9/site-packages/dazl/values/protobuf.py", line 52, in data_record
    value = context.append_path(name).convert(fld_metadata.type, fld_data.value)
  File "/usr/local/lib/python3.9/site-packages/dazl/values/context.py", line 105, in convert
    return self.mapper.prim_gen_map(
  File "/usr/local/lib/python3.9/site-packages/dazl/values/protobuf.py", line 132, in prim_gen_map
    obj[key] = value
TypeError: unhashable type: 'dict'

After some investigation, I came across the reason for the error shown, it being a dictionary with the structure of a Claim from the ContigentClaims Library, like so:

{'Zero': {}}

This error seems to be coming from the Dazl library, can you help me with this issue?

DT
dtanabe
Nov 2021

Thanks for reporting; at first blush I agree; looks like a serialization bug in dazl. Will look into it.

AL
alex.graham
Nov 2021

Hey @Luis_Almeida, can you let us know which version of dazl you are using?

LU
Luis_Almeida
Nov 2021

Hi, I’m using version 7.5.9. I’ll try it out with the latest version and get back to you.

LU
Luis_Almeida
Nov 2021

Many thanks, that seems to have fixed it. Thank you for your time.

AL
alex.graham
Nov 2021

Great, I’m glad to hear it!

← Back to Discussions