human
Complete this python program:
def header_property(name, doc, transform=None):
assistant
#Here is the Python program you requested.

    """Creates a header getter/setter.
    Args:
    name: Header name, e.g., "Content-Type"
    doc: Docstring for the property
    transform: Transformation function to use when setting the
    property. The value will be passed to the function, and
    the function should return the transformed value to use
    as the value of the header (default ``None``).
    """
    normalized_name = name.lower()
    def fget(self):
        try:
            return self._headers[normalized_name]
        except KeyError:
            return None
    if (transform is None):
        if six.PY2:
            def fset(self, value):
                self._headers[normalized_name] = str(value)
        else:
            def fset(self, value):
                self._headers[normalized_name] = value
    else:
        def fset(self, value):
            self._headers[normalized_name] = transform(value)
    def fdel(self):
        del self._headers[normalized_name]
    return property(fget, fset, fdel, doc)