kevinheavey / anchorpy

The Python Anchor client.
https://kevinheavey.github.io/anchorpy/
MIT License
215 stars 59 forks source link

Unknown variant `hashMap` #114

Open GabrielePicco opened 1 year ago

GabrielePicco commented 1 year ago

I'm trying to generate the client for the metaplex metadata program IDL, but seems that hashmap type is missing the mapping.

Steps to reproduce

  1. Download the idl: https://raw.githubusercontent.com/metaplex-foundation/metaplex-program-library/master/token-metadata/js/idl/mpl_token_metadata.json
  2. anchorpy client-gen mpl_token_metadata.json metaplex_client

Error:

solders.SerdeJSONError: unknown variant `hashMap`, expected one of `bool`, `u8`, `i8`, `u16`, `i16`, `u32`, `i32`, `f32`, `u64`, `i64`, `f64`, `u128`, `i128`, `bytes`, `string`, `publicKey`, `defined`, `option`, `vec`, `array` at line 4498 column 5
GabrielePicco commented 1 year ago

Update:

Using the Idl.from_json, I also get the same issue:

with Path("./mpl_token_metadata.json").open() as f:
        raw_idl = f.read()
idl = Idl.from_json(raw_idl)

I did some investigation, and this likely needs bindings to be added in the anchorpy-core module

kevinheavey commented 1 year ago

This means it would need to be in Anchor itself. The anchor_lang crate doesn't support HashMap in IDLs https://github.com/coral-xyz/anchor/blob/master/lang/syn/src/idl/mod.rs