Skip to content

Commit

Permalink
Update internal use of decimal to float (nushell#10333)
Browse files Browse the repository at this point in the history
# Description
We made the decision that our floating point type should be referred to
as `float` over `decimal`.
Commands were updated by nushell#9979 and nushell#10320

Now make the internal codebase consistent in referring to this data type
as `float`.

Work for nushell#10332

# User-Facing Changes

`decimal` has been removed as a type name/symbol. 

Instead of 
```nushell
def foo [bar: decimal] decimal -> decimal {}
```
use 
```nushell
def foo [bar: float] float -> float {}
```

Potential effect of `SyntaxShape`'s `Display` implementation now also
referring to `float` instead of `decimal`

# Details
- Rename `SyntaxShape::Decimal` to `Float`
- Update `Display for SyntaxShape` to `float`
- Update error message + fn name in dataframe code
- Fix docs in command examples
- Rename tests that are float specific
- Update doccomment on `SyntaxShape`
- Update comment in script

# Tests + Formatting
Updates the names of some tests
  • Loading branch information
sholderbach authored and hardfau1t committed Dec 14, 2023
1 parent 33da29a commit 879ba88
Show file tree
Hide file tree
Showing 15 changed files with 48 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ pub(super) fn compute_series_single_value(
compute_series_i64(&lhs, *val, <ChunkedArray<Int64Type>>::add, lhs_span)
}
Value::Float { val, .. } => {
compute_series_decimal(&lhs, *val, <ChunkedArray<Float64Type>>::add, lhs_span)
compute_series_float(&lhs, *val, <ChunkedArray<Float64Type>>::add, lhs_span)
}
Value::String { val, .. } => add_string_to_series(&lhs, val, lhs_span),
_ => Err(ShellError::OperatorMismatch {
Expand All @@ -242,7 +242,7 @@ pub(super) fn compute_series_single_value(
compute_series_i64(&lhs, *val, <ChunkedArray<Int64Type>>::sub, lhs_span)
}
Value::Float { val, .. } => {
compute_series_decimal(&lhs, *val, <ChunkedArray<Float64Type>>::sub, lhs_span)
compute_series_float(&lhs, *val, <ChunkedArray<Float64Type>>::sub, lhs_span)
}
_ => Err(ShellError::OperatorMismatch {
op_span: operator.span,
Expand All @@ -257,7 +257,7 @@ pub(super) fn compute_series_single_value(
compute_series_i64(&lhs, *val, <ChunkedArray<Int64Type>>::mul, lhs_span)
}
Value::Float { val, .. } => {
compute_series_decimal(&lhs, *val, <ChunkedArray<Float64Type>>::mul, lhs_span)
compute_series_float(&lhs, *val, <ChunkedArray<Float64Type>>::mul, lhs_span)
}
_ => Err(ShellError::OperatorMismatch {
op_span: operator.span,
Expand All @@ -281,12 +281,7 @@ pub(super) fn compute_series_single_value(
if val.is_zero() {
Err(ShellError::DivisionByZero { span })
} else {
compute_series_decimal(
&lhs,
*val,
<ChunkedArray<Float64Type>>::div,
lhs_span,
)
compute_series_float(&lhs, *val, <ChunkedArray<Float64Type>>::div, lhs_span)
}
}
_ => Err(ShellError::OperatorMismatch {
Expand All @@ -301,7 +296,7 @@ pub(super) fn compute_series_single_value(
Operator::Comparison(Comparison::Equal) => match &right {
Value::Int { val, .. } => compare_series_i64(&lhs, *val, ChunkedArray::equal, lhs_span),
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::equal, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::equal, lhs_span)
}
Value::String { val, .. } => {
let equal_pattern = format!("^{}$", fancy_regex::escape(val));
Expand All @@ -323,7 +318,7 @@ pub(super) fn compute_series_single_value(
compare_series_i64(&lhs, *val, ChunkedArray::not_equal, lhs_span)
}
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::not_equal, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::not_equal, lhs_span)
}
Value::Date { val, .. } => compare_series_i64(
&lhs,
Expand All @@ -342,7 +337,7 @@ pub(super) fn compute_series_single_value(
Operator::Comparison(Comparison::LessThan) => match &right {
Value::Int { val, .. } => compare_series_i64(&lhs, *val, ChunkedArray::lt, lhs_span),
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::lt, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::lt, lhs_span)
}
Value::Date { val, .. } => {
compare_series_i64(&lhs, val.timestamp_millis(), ChunkedArray::lt, lhs_span)
Expand All @@ -358,7 +353,7 @@ pub(super) fn compute_series_single_value(
Operator::Comparison(Comparison::LessThanOrEqual) => match &right {
Value::Int { val, .. } => compare_series_i64(&lhs, *val, ChunkedArray::lt_eq, lhs_span),
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::lt_eq, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::lt_eq, lhs_span)
}
Value::Date { val, .. } => {
compare_series_i64(&lhs, val.timestamp_millis(), ChunkedArray::lt_eq, lhs_span)
Expand All @@ -374,7 +369,7 @@ pub(super) fn compute_series_single_value(
Operator::Comparison(Comparison::GreaterThan) => match &right {
Value::Int { val, .. } => compare_series_i64(&lhs, *val, ChunkedArray::gt, lhs_span),
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::gt, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::gt, lhs_span)
}
Value::Date { val, .. } => {
compare_series_i64(&lhs, val.timestamp_millis(), ChunkedArray::gt, lhs_span)
Expand All @@ -390,7 +385,7 @@ pub(super) fn compute_series_single_value(
Operator::Comparison(Comparison::GreaterThanOrEqual) => match &right {
Value::Int { val, .. } => compare_series_i64(&lhs, *val, ChunkedArray::gt_eq, lhs_span),
Value::Float { val, .. } => {
compare_series_decimal(&lhs, *val, ChunkedArray::gt_eq, lhs_span)
compare_series_float(&lhs, *val, ChunkedArray::gt_eq, lhs_span)
}
Value::Date { val, .. } => {
compare_series_i64(&lhs, val.timestamp_millis(), ChunkedArray::gt_eq, lhs_span)
Expand Down Expand Up @@ -514,12 +509,7 @@ where
}
}

fn compute_series_decimal<F>(
series: &Series,
val: f64,
f: F,
span: Span,
) -> Result<Value, ShellError>
fn compute_series_float<F>(series: &Series, val: f64, f: F, span: Span) -> Result<Value, ShellError>
where
F: Fn(ChunkedArray<Float64Type>, f64) -> ChunkedArray<Float64Type>,
{
Expand Down Expand Up @@ -548,7 +538,7 @@ where
_ => Err(ShellError::GenericError(
"Incorrect type".into(),
format!(
"Series of type {} can not be used for operations with a decimal value",
"Series of type {} can not be used for operations with a float value",
series.dtype()
),
Some(span),
Expand Down Expand Up @@ -668,12 +658,7 @@ where
}
}

fn compare_series_decimal<F>(
series: &Series,
val: f64,
f: F,
span: Span,
) -> Result<Value, ShellError>
fn compare_series_float<F>(series: &Series, val: f64, f: F, span: Span) -> Result<Value, ShellError>
where
F: Fn(&ChunkedArray<Float64Type>, f64) -> ChunkedArray<BooleanType>,
{
Expand Down Expand Up @@ -702,7 +687,7 @@ where
_ => Err(ShellError::GenericError(
"Incorrect type".into(),
format!(
"Series of type {} can not be used for operations with a decimal value",
"Series of type {} can not be used for operations with a float value",
series.dtype()
),
Some(span),
Expand Down
2 changes: 1 addition & 1 deletion crates/nu-command/src/conversions/into/binary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ impl Command for SubCommand {
result: None,
},
Example {
description: "convert a decimal to a nushell binary primitive",
description: "convert a float to a nushell binary primitive",
example: "1.234 | into binary",
result: Some(Value::binary(
1.234f64.to_ne_bytes().to_vec(),
Expand Down
4 changes: 2 additions & 2 deletions crates/nu-command/src/conversions/into/bool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,12 @@ impl Command for SubCommand {
result: Some(Value::bool(true, span)),
},
Example {
description: "convert decimal to boolean",
description: "convert float to boolean",
example: "0.3 | into bool",
result: Some(Value::bool(true, span)),
},
Example {
description: "convert decimal string to boolean",
description: "convert float string to boolean",
example: "'0.0' | into bool",
result: Some(Value::bool(false, span)),
},
Expand Down
2 changes: 1 addition & 1 deletion crates/nu-command/src/conversions/into/filesize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ impl Command for SubCommand {
result: Some(Value::filesize(2, Span::test_data())),
},
Example {
description: "Convert decimal to filesize",
description: "Convert float to filesize",
example: "8.3 | into filesize",
result: Some(Value::filesize(8, Span::test_data())),
},
Expand Down
4 changes: 2 additions & 2 deletions crates/nu-command/src/conversions/into/float.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ mod tests {

#[test]
#[allow(clippy::approx_constant)]
fn string_to_decimal() {
fn string_to_float() {
let word = Value::test_string("3.1415");
let expected = Value::test_float(3.1415);

Expand All @@ -154,7 +154,7 @@ mod tests {
}

#[test]
fn communicates_parsing_error_given_an_invalid_decimallike_string() {
fn communicates_parsing_error_given_an_invalid_floatlike_string() {
let invalid_str = Value::test_string("11.6anra");

let actual = action(
Expand Down
2 changes: 1 addition & 1 deletion crates/nu-command/src/conversions/into/int.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ impl Command for SubCommand {
result: Some(Value::test_int(2)),
},
Example {
description: "Convert decimal to integer",
description: "Convert float to integer",
example: "5.9 | into int",
result: Some(Value::test_int(5)),
},
Expand Down
10 changes: 5 additions & 5 deletions crates/nu-command/src/conversions/into/string.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,22 +89,22 @@ impl Command for SubCommand {
result: Some(Value::test_string("5.000")),
},
Example {
description: "convert decimal to string and round to nearest integer",
description: "convert float to string and round to nearest integer",
example: "1.7 | into string -d 0",
result: Some(Value::test_string("2")),
},
Example {
description: "convert decimal to string",
description: "convert float to string",
example: "1.7 | into string -d 1",
result: Some(Value::test_string("1.7")),
},
Example {
description: "convert decimal to string and limit to 2 decimals",
description: "convert float to string and limit to 2 decimals",
example: "1.734 | into string -d 2",
result: Some(Value::test_string("1.73")),
},
Example {
description: "try to convert decimal to string and provide negative decimal points",
description: "try to convert float to string and provide negative decimal points",
example: "1.734 | into string -d -2",
result: None,
// FIXME
Expand All @@ -116,7 +116,7 @@ impl Command for SubCommand {
// }),
},
Example {
description: "convert decimal to string",
description: "convert float to string",
example: "4.3 | into string",
result: Some(Value::test_string("4.3")),
},
Expand Down
2 changes: 1 addition & 1 deletion crates/nu-command/tests/commands/into_filesize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ fn into_filesize_int() {
}

#[test]
fn into_filesize_decimal() {
fn into_filesize_float() {
let actual = nu!("1.2 | into filesize");

assert!(actual.out.contains("1 B"));
Expand Down
12 changes: 6 additions & 6 deletions crates/nu-command/tests/commands/math/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ fn error_zero_division_int_int() {
}

#[test]
fn error_zero_division_decimal_int() {
fn error_zero_division_float_int() {
let actual = nu!(pipeline(
r#"
1.0 / 0
Expand All @@ -128,7 +128,7 @@ fn error_zero_division_decimal_int() {
}

#[test]
fn error_zero_division_int_decimal() {
fn error_zero_division_int_float() {
let actual = nu!(pipeline(
r#"
1 / 0.0
Expand All @@ -139,7 +139,7 @@ fn error_zero_division_int_decimal() {
}

#[test]
fn error_zero_division_decimal_decimal() {
fn error_zero_division_float_float() {
let actual = nu!(pipeline(
r#"
1.0 / 0.0
Expand Down Expand Up @@ -194,7 +194,7 @@ fn error_zero_floor_division_int_int() {
}

#[test]
fn error_zero_floor_division_decimal_int() {
fn error_zero_floor_division_float_int() {
let actual = nu!(pipeline(
r#"
1.0 // 0
Expand All @@ -205,7 +205,7 @@ fn error_zero_floor_division_decimal_int() {
}

#[test]
fn error_zero_floor_division_int_decimal() {
fn error_zero_floor_division_int_float() {
let actual = nu!(pipeline(
r#"
1 // 0.0
Expand All @@ -216,7 +216,7 @@ fn error_zero_floor_division_int_decimal() {
}

#[test]
fn error_zero_floor_division_decimal_decimal() {
fn error_zero_floor_division_float_float() {
let actual = nu!(pipeline(
r#"
1.0 // 0.0
Expand Down
8 changes: 4 additions & 4 deletions crates/nu-command/tests/commands/str_/into_string.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ fn from_number() {
}

#[test]
fn from_decimal() {
fn from_float() {
let actual = nu!(r#"
echo 1.5 | into string
"#);
Expand Down Expand Up @@ -90,7 +90,7 @@ fn from_filesize() {
}

#[test]
fn from_decimal_correct_trailing_zeros() {
fn from_float_correct_trailing_zeros() {
let actual = nu!(r#"
1.23000 | into string -d 3
"#);
Expand All @@ -99,7 +99,7 @@ fn from_decimal_correct_trailing_zeros() {
}

#[test]
fn from_int_decimal_correct_trailing_zeros() {
fn from_int_float_correct_trailing_zeros() {
let actual = nu!(r#"
1.00000 | into string -d 3
"#);
Expand All @@ -108,7 +108,7 @@ fn from_int_decimal_correct_trailing_zeros() {
}

#[test]
fn from_int_decimal_trim_trailing_zeros() {
fn from_int_float_trim_trailing_zeros() {
let actual = nu!(r#"
1.00000 | into string | $"($in) flat"
"#);
Expand Down
2 changes: 1 addition & 1 deletion crates/nu-command/tests/commands/str_/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ fn converts_to_int() {
}

#[test]
fn converts_to_decimal() {
fn converts_to_float() {
let actual = nu!(pipeline(
r#"
echo "3.1, 0.0415"
Expand Down
4 changes: 2 additions & 2 deletions crates/nu-parser/src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2709,7 +2709,7 @@ pub fn parse_shape_name(
b"duration" => SyntaxShape::Duration,
b"error" => SyntaxShape::Error,
b"expr" => SyntaxShape::Expression,
b"float" | b"decimal" => SyntaxShape::Decimal,
b"float" => SyntaxShape::Float,
b"filesize" => SyntaxShape::Filesize,
b"full-cell-path" => SyntaxShape::FullCellPath,
b"glob" => SyntaxShape::GlobPattern,
Expand Down Expand Up @@ -4654,7 +4654,7 @@ pub fn parse_value(
expression
}
SyntaxShape::Number => parse_number(working_set, span),
SyntaxShape::Decimal => parse_float(working_set, span),
SyntaxShape::Float => parse_float(working_set, span),
SyntaxShape::Int => parse_int(working_set, span),
SyntaxShape::Duration => parse_duration(working_set, span),
SyntaxShape::DateTime => parse_datetime(working_set, span),
Expand Down

0 comments on commit 879ba88

Please sign in to comment.