from typing import Any


def create_property(attr: str, default: Any, type_annotation: type) -> property:
    """Return a property descriptor given config attribute."""

    def fget(self) -> Any:
        if attr in self._env_overrides:
            return self._env_overrides[attr]
        if attr in self._config:
            return self._config[attr]
        return self._defaults[attr]

    def fset(self, value: Any) -> None:
        self._config[attr] = value

    def fdel(self) -> None:
        self._config[attr] = default

    doc = f"Configuration {attr}[{type_annotation}]"
    return property(fget, fset, fdel, doc)