<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def description(self, **kwargs):
 """Set interface description. Args: int_type (str):
 Type of interface. (gigabitethernet, tengigabitethernet, etc) name (str):
 Name of interface. (1/0/5, 1/0/10, etc) desc (str):
 The description of the interface. callback (function):
 A function executed upon completion of the method. The only parameter passed to `callback` will be the ``ElementTree`` `config`. Returns: Return value of `callback`. Raises: KeyError: if `int_type`, `name`, or `desc` is not specified. ValueError: if `name`, `int_type`, or `desc` is not a valid value. Examples: Traceback (most recent call last):
 KeyError """

        int_type = str(kwargs.pop('int_type').lower())
        name = str(kwargs.pop('name'))
        desc = str(kwargs.pop('desc'))
        callback = kwargs.pop('callback', self._callback)

        int_types = [
            'gigabitethernet',
            'tengigabitethernet',
            'fortygigabitethernet',
            'hundredgigabitethernet',
            'port_channel',
            'vlan'
        ]

        if int_type not in int_types:
            raise ValueError("`int_type` must be one of: %s" % repr(int_types))

        desc_args = dict(name=name, description=desc)

        if int_type == "vlan":
            if not pynos.utilities.valid_vlan_id(name):
                raise InvalidVlanId("`name` must be between `1` and `8191`")

            config = self._interface.interface_vlan_interface_vlan_description(
                **desc_args
            )
        else:
            if not pynos.utilities.valid_interface(int_type, name):
                raise ValueError('`name` must be in the format of x/y/z for '
                                 'physical interfaces or x for port channel.')

            config = getattr(
                self._interface,
                'interface_%s_description' % int_type
            )(**desc_args)
        return callback(config)