Bug report: query_account does not support PeriodicVestingAccount. Solution provided.
Opened this issue · 1 comments
Prerequisites
- I am running the latest CosmPy version.
- I checked the documentation and found no answer to my problem.
- I checked the existing issues to make sure my problem has not already been reported.
- I have read the code of conduct before creating this issue.
Expected Behavior
Usage:
account = ledger.query_account(wallet.address())
Issue:
query_account
expects a BaseAccount type. Other chains Like Bostrom appear to have a mix of types. My guess is that the account change from BaseAccount to PeriodicVestingAccount happens after a "investmint" event is transacted.
Fix:
Add PeriodicVestingAccount import to https://github.com/fetchai/cosmpy/blob/main/cosmpy/aerial/client/__init__.py
from cosmpy.protos.cosmos.vesting.v1beta1.vesting_pb2 import PeriodicVestingAccount
Change https://github.com/fetchai/cosmpy/blob/main/cosmpy/aerial/client/__init__.py#L313-L316 to
if response.account.Is(BaseAccount.DESCRIPTOR):
account = BaseAccount()
response.account.Unpack(account)
elif response.account.Is(PeriodicVestingAccount.DESCRIPTOR):
account = PeriodicVestingAccount()
response.account.Unpack(account)
account = account.base_vesting_account.base_account
else:
raise RuntimeError("Unexpected account type returned from query")
Remarks:
#324 and #328 report the same error message but did not make note of the account type they were using. It is uncertain if this is the cause for their issues as well.
Current Behavior
Traceback (most recent call last):
File "/workdir/csms.py", line 114, in <module>
loop.run_until_complete(main())
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/workdir/csms.py", line 62, in main
account = ledger.query_account(wallet.address())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/cosmpy/aerial/client/__init__.py", line 315, in query_account
raise RuntimeError("Unexpected account type returned from query")
RuntimeError: Unexpected account type returned from query
To Reproduce
No response
Context
Debian 12 Bookworm
Python 3.11.6
Cosmpy v0.9.1 & v0.9.2
Failure Logs
No response
Nice catch. We will need to add one more thing - support for the ContinuouisVestingAccount
(linear vesting).