<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def get_my_did_with_meta(wallet_handle: int, did: str) -> str: """ Get DID metadata and verkey stored in the wallet. :param wallet_handle: wallet handler (created by open_wallet). :param did: The DID to retrieve metadata. :return: DID with verkey and metadata. """


    logger = logging.getLogger(__name__)
    logger.debug("get_my_did_with_meta: >>> wallet_handle: %r, did: %r",
                 wallet_handle,
                 did)

    if not hasattr(get_my_did_with_meta, "cb"):
        logger.debug("get_my_did_with_meta: Creating callback")
        get_my_did_with_meta.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))

    c_wallet_handle = c_int32(wallet_handle)
    c_did = c_char_p(did.encode('utf-8'))

    did_with_meta = await do_call('indy_get_my_did_with_meta',
                                  c_wallet_handle,
                                  c_did,
                                  get_my_did_with_meta.cb)

    res = did_with_meta.decode()

    logger.debug("get_my_did_with_meta: <<< res: %r", res)
    return res