imm_values(imm) yields a dictionary of the values of the immutable object imm. Note that this
    forces all of the values to be reified, so only use it if you want to force execution of all
    lazy values.

def imm_values(imm):
    '''
    imm_values(imm) yields a dictionary of the values of the immutable object imm. Note that this
    forces all of the values to be reified, so only use it if you want to force execution of all
    lazy values.
    '''
    return {p: getattr(imm, p) for p in six.iterkeys(_imm_value_data(imm))}