docs: def convert(values, source_measure_or_unit_abbreviation, target_measure_or_unit_abbreviation):
      """
          Convert a value or a list of values from an unit to another one.
          The two units must represent the same physical dimension.
      """
  
      source_dimension = get_dimension_by_unit_measure_or_abbreviation(source_measure_or_unit_abbreviation)
      target_dimension = get_dimension_by_unit_measure_or_abbreviation(target_measure_or_unit_abbreviation)
  
      if source_dimension == target_dimension:
          source=JSONObject({})
          target=JSONObject({})
          source.unit_abbreviation, source.factor = _parse_unit(source_measure_or_unit_abbreviation)
          target.unit_abbreviation, target.factor = _parse_unit(target_measure_or_unit_abbreviation)
  
          source.unit_data = get_unit_by_abbreviation(source.unit_abbreviation)
          target.unit_data = get_unit_by_abbreviation(target.unit_abbreviation)
  
          source.conv_factor = JSONObject({'lf': source.unit_data.lf, 'cf': source.unit_data.cf})
          target.conv_factor = JSONObject({'lf': target.unit_data.lf, 'cf': target.unit_data.cf})
  
          if isinstance(values, float):
              # If values is a float => returns a float
              return (source.conv_factor.lf / target.conv_factor.lf * (source.factor * values)
                      + (source.conv_factor.cf - target.conv_factor.cf)
                      / target.conv_factor.lf) / target.factor
          elif isinstance(values, list):
              # If values is a list of floats => returns a list of floats
              return [(source.conv_factor.lf / target.conv_factor.lf * (source.factor * value)
                      + (source.conv_factor.cf - target.conv_factor.cf)
                      / target.conv_factor.lf) / target.factor for value in values]
      else:
          raise HydraError("Unit conversion: dimensions are not consistent.")