anchorpy icon indicating copy to clipboard operation
anchorpy copied to clipboard

Unknown variant `hashMap`

Open GabrielePicco opened this issue 2 years ago • 2 comments

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 avatar Mar 03 '23 08:03 GabrielePicco

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

GabrielePicco avatar Mar 09 '23 07:03 GabrielePicco

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

kevinheavey avatar Mar 10 '23 15:03 kevinheavey