rocklabs-io/ic-py

Exceptions must derive from BaseException error

Closed this issue · 4 comments

I have a friend who is able to run this exact code, but it gives me this error. I'm running from Jupiter Notebooks through Anaconda.

This is the code:

canister_id = '3mttv-dqaaa-aaaah-qcn6q-cai'

from ic.client import Client
from ic.identity import Identity
from ic.agent import Agent
from ic.candid import encode, decode, Types

iden = Identity()
client = Client(url = "https://ic0.app")
agent = Agent(iden, client)
params = []
params = encode(params)
result = agent.query_raw(canister_id, "listings", params)

And this is the error trace. Any help would be appreciated!

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-1481165a8320> in <module>
      4 params = []
      5 params = encode(params)
----> 6 result = agent.query_raw(canister_id, "listings", params)

/opt/anaconda3/lib/python3.7/site-packages/ic/agent.py in query_raw(self, canister_id, method_name, arg)
     72         result = self.query_endpoint(canister_id, data)
     73         if result['status'] == 'replied':
---> 74             arg = decode(result['reply']['arg'])
     75             return arg
     76         elif result['status'] == 'rejected':

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decode(data, retTypes)
   1149         outputs.append({
   1150             'type': t.name,
-> 1151             'value': t.decodeValue(b, types[i])
   1152             })
   1153 

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    870             raise "Recursive type uninitialized"
    871         else:
--> 872             return self._type.decodeValue(b, t)
    873 
    874     @property

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    566         rets = []
    567         for _ in range(length):
--> 568             rets.append(self._type.decodeValue(b, vec._type))
    569         return rets
    570 

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    870             raise "Recursive type uninitialized"
    871         else:
--> 872             return self._type.decodeValue(b, t)
    873 
    874     @property

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    746                 wireType.decodeValue(b, wireType)
    747             else:
--> 748                 res.append(self._components[i].decodeValue(b, wireType))
    749         return res
    750 

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    870             raise "Recursive type uninitialized"
    871         else:
--> 872             return self._type.decodeValue(b, t)
    873 
    874     @property

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    685             expectKey = keys[idx]
    686             exceptValue = self._fields[expectKey]
--> 687             x[expectKey] = exceptValue.decodeValue(b, v)
    688             idx += 1
    689         if idx < len(self._fields):

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    870             raise "Recursive type uninitialized"
    871         else:
--> 872             return self._type.decodeValue(b, t)
    873 
    874     @property

/opt/anaconda3/lib/python3.7/site-packages/ic/candid.py in decodeValue(self, b, t)
    610             return [self._type.decodeValue(b, opt._type)]
    611         else:
--> 612             raise "Not an option value"
    613 
    614     @property

TypeError: exceptions must derive from BaseException

I can run this code without error, too.

Where did you get ic-py in Anaconda? I think it have been fixed in recent commits. Use main brach of ic-py would success.

Ahhhhh yeah I cloned about a week back and just hadn't thought to pull in updates. Works fine now :)

Sorry for the bother, and thanks!

Pepn commented

The error is still in the 0.0.8 release right? Getting the same results with the same code. (installed using pip21.3.4 on python 3.9.6 on W10)

edit: (yes it is, fixed it by downloading & importing the fresh ic files, manually building the repo with pip didn't work)

Ah, yeah. I'm not pip installing right now. I clone the repo locally and then run pip install ./ in the directory. That's how I'm working with things right now because I don't think every change in the main branch is pushed as a version for pip installation.