<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _checkInt(inputvalue, minvalue=None, maxvalue=None, description='inputvalue'):
 """Check that the given integer is valid. Args: * inputvalue (int or long):
 The integer to be checked * minvalue (int or long, or None):
 Minimum value of the integer * maxvalue (int or long, or None):
 Maximum value of the integer * description (string):
 Used in error messages for the checked inputvalue Raises: TypeError, ValueError Note: Can not use the function :func:`_checkString`, as that function uses this function internally. """

    if not isinstance(description, str):
        raise TypeError('The description should be a string. Given: {0!r}'.format(description))

    if not isinstance(inputvalue, (int, long)):
        raise TypeError('The {0} must be an integer. Given: {1!r}'.format(description, inputvalue))

    if not isinstance(minvalue, (int, long, type(None))):
        raise TypeError('The minvalue must be an integer or None. Given: {0!r}'.format(minvalue))

    if not isinstance(maxvalue, (int, long, type(None))):
        raise TypeError('The maxvalue must be an integer or None. Given: {0!r}'.format(maxvalue))

    _checkNumerical(inputvalue, minvalue, maxvalue, description)