code: def _numeric_coercion(value,
                        coercion_function = None,
                        allow_empty = False,
                        minimum = None,
                        maximum = None):
      
      if coercion_function is None:
          raise errors.CoercionFunctionEmptyError('coercion_function cannot be empty')
      elif not hasattr(coercion_function, '__call__'):
          raise errors.NotCallableError('coercion_function must be callable')
  
      value = numeric(value,                                                      # pylint: disable=E1123
                      allow_empty = allow_empty,
                      minimum = minimum,
                      maximum = maximum,
                      force_run = True)
  
      if value is not None:
          try:
              value = coercion_function(value)
          except (ValueError, TypeError, AttributeError, IndexError, SyntaxError):
              raise errors.CannotCoerceError(
                  'cannot coerce value (%s) to desired type' % value
              )
  
      return value
docs: Validate that ``value`` is numeric and coerce using ``coercion_function``.
  
      :param value: The value to validate.
  
      :param coercion_function: The function to use to coerce ``value`` to the desired
        type.
      :type coercion_function: callable
  
      :param allow_empty: If ``True``, returns :obj:`None <python:None>` if
        ``value`` is :obj:`None <python:None>`. If  ``False``, raises a
        :class:`EmptyValueError <validator_collection.errors.EmptyValueError>` if
        ``value`` is :obj:`None <python:None>`. Defaults to ``False``.
      :type allow_empty: :class:`bool <python:bool>`
  
      :returns: ``value`` / :obj:`None <python:None>`
      :rtype: the type returned by ``coercion_function``
  
      :raises CoercionFunctionEmptyError: if ``coercion_function`` is empty
      :raises EmptyValueError: if ``value`` is :obj:`None <python:None>` and
        ``allow_empty`` is ``False``
      :raises CannotCoerceError: if ``coercion_function`` raises an
        :class:`ValueError <python:ValueError>`, :class:`TypeError <python:TypeError>`,
        :class:`AttributeError <python:AttributeError>`,
        :class:`IndexError <python:IndexError>, or
        :class:`SyntaxError <python:SyntaxError>`