code: def certify_int(value, min_value=None, max_value=None, required=True):
      
      certify_params(
          (_certify_int_param, 'max_length', max_value, dict(negative=True, required=False)),
          (_certify_int_param, 'min_length', min_value, dict(negative=True, required=False)),
      )
      if certify_required(
          value=value,
          required=required,
      ):
          return
  
      if not isinstance(value, six.integer_types):
          raise CertifierTypeError(
              message="expected integer, but value is of type {cls!r}".format(
                  cls=value.__class__.__name__),
              value=value,
              required=required,
          )
  
      if min_value is not None and value < min_value:
          raise CertifierValueError(
              message="{value} is less than minimum acceptable {min}".format(
                  value=value, min=min_value),
              value=value,
              required=required,
          )
  
      if max_value is not None and value > max_value:
          raise CertifierValueError(
              message="{value} is more than the maximum acceptable {max}".format(
                  value=value, max=max_value),
              value=value,
              required=required,
          )
docs: Certifier for integer values.
  
      :param six.integer_types value:
          The number to be certified.
      :param int min_value:
          The minimum acceptable value for the number.
      :param int max_value:
          The maximum acceptable value for the number.
      :param bool required:
          Whether the value can be `None`. Defaults to True.
      :raises CertifierTypeError:
          The type is invalid
      :raises CertifierValueError:
          The value is invalid