def alias(prop_name, doc=None):
    """
    Returns a property that is a read/write alias for another attribute
    of the object.

    See :func:`dict_alias`.
    """
    if doc is None:
        doc = 'Alias for :attr:`' + prop_name + '`'
    prop_name = str(prop_name)
    return property(lambda self: getattr(self, prop_name), lambda self, nv:
        setattr(self, prop_name, nv), doc=doc)
