code: async def lookup(source_id: str, schema_id: str):
          try:
              schema = Schema(source_id, '', '', [])
              if not hasattr(Schema.lookup, "cb"):
                  schema.logger.debug("vcx_schema_get_attributes: Creating callback")
                  Schema.lookup.cb = create_cb(CFUNCTYPE(None, c_uint32, c_uint32, c_uint32, c_char_p))
              c_source_id = c_char_p(source_id.encode('utf-8'))
              c_schema_id = c_char_p(schema_id.encode('utf-8'))
              handle, data = await do_call('vcx_schema_get_attributes',
                                           c_source_id,
                                           c_schema_id,
                                           Schema.lookup.cb)
              schema.logger.debug("created schema object")
              schema_result = json.loads(data.decode())
              schema.attrs = schema_result['data']
              schema.name = schema_result['name']
              schema.version = schema_result['version']
              schema.handle = handle
              return schema
          except KeyError:
              raise VcxError(ErrorCode.InvalidSchema)