empty metadata seems to appear as a list yet the update type takes a dict so we force the type to be a dict if read metadata is empty