def is_ranged_value(value, min_value=None, max_value=None,
                    min_inclusive: bool=True, max_inclusive: bool=True) -> bool:
    """
    Parameters
    ----------
    value : float
        float : the value as a float
    min_value / max_value : float / None
        float : the constraint is active
        None : the constraint is inactive
    min_inclusive / max_inclusive; bool; default=True
        flips [min_value, max_value] to:
          - (min_value, max_value)
          - [min_value, max_value)
          - (min_value, max_value]

    Returns
    -------
    is_ranged : bool
        is the value in range

    """
    is_ranged = True
    if min_value is not None:
        #print("min:")
        if min_inclusive:
            # ( is the goal
            if value < min_value:
                is_ranged = False
                #print('  min_exclusive, %s %s' % (value, min_value))
            #else:
                #print('  passed minA=%s' % value)
        else:
            # [ is the goal
            if value <= min_value:
                is_ranged = False
                #print('  min_inclusive, %s %s' % (value, min_value))
            #else:
                #print('  passed minB=%s' % value)
    #else:
        #print('no limit on min')

    if max_value is not None:
        #print("max:")
        if max_inclusive:
            # ] is the goal
            if value > max_value:
                #print('  max_exclusive, %s %s' % (value, max_value))
                is_ranged = False
            #else:
                #print('  passed maxA=%s' % value)
        else:
            # ) is the goal
            if value >= max_value:
                is_ranged = False
                #print('  max_inclusive, %s %s' % (value, max_value))
            #else:
                #print('  passed maxB=%s' % value)
    #else:
        #print('no limit on max')
    return is_ranged