Remove a property from the document.

        Calling code should use this method to remove properties on the
        document instead of modifying ``properties`` directly.

        If there is a property with the name in ``key``, it will be removed.
        Otherwise, a ``KeyError`` will be thrown.

def delete_property(self, key):
        """Remove a property from the document.

        Calling code should use this method to remove properties on the
        document instead of modifying ``properties`` directly.

        If there is a property with the name in ``key``, it will be removed.
        Otherwise, a ``KeyError`` will be thrown.

        """
        if key in self.RESERVED_ATTRIBUTE_NAMES:
            raise KeyError(key)
        del self.o[key]