Skip to content

Commit 34c09d8

Browse files
authored
manually revert from serde_yml to serde_yaml (nushell#14987)
# Description This reverts back to serde_yaml from serde_yml. Closes nushell#14934 Reopen nushell#14630 # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
1 parent 13d5a15 commit 34c09d8

File tree

6 files changed

+67
-70
lines changed

6 files changed

+67
-70
lines changed

Cargo.lock

Lines changed: 11 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ scopeguard = { version = "1.2.0" }
152152
serde = { version = "1.0" }
153153
serde_json = "1.0"
154154
serde_urlencoded = "0.7.1"
155-
serde_yml = "0.0.12"
155+
serde_yaml = "0.9.33"
156156
sha2 = "0.10"
157157
strip-ansi-escapes = "0.2.0"
158158
syn = "2.0"

crates/nu-command/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ scopeguard = { workspace = true }
8484
serde = { workspace = true, features = ["derive"] }
8585
serde_json = { workspace = true, features = ["preserve_order"] }
8686
serde_urlencoded = { workspace = true }
87-
serde_yml = { workspace = true }
87+
serde_yaml = { workspace = true }
8888
sha2 = { workspace = true }
8989
sysinfo = { workspace = true }
9090
tabled = { workspace = true, features = ["ansi"], default-features = false }

crates/nu-command/src/formats/from/yaml.rs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ impl Command for FromYml {
7272
}
7373

7474
fn convert_yaml_value_to_nu_value(
75-
v: &serde_yml::Value,
75+
v: &serde_yaml::Value,
7676
span: Span,
7777
val_span: Span,
7878
) -> Result<Value, ShellError> {
@@ -83,22 +83,22 @@ fn convert_yaml_value_to_nu_value(
8383
input_span: val_span,
8484
};
8585
Ok(match v {
86-
serde_yml::Value::Bool(b) => Value::bool(*b, span),
87-
serde_yml::Value::Number(n) if n.is_i64() => {
86+
serde_yaml::Value::Bool(b) => Value::bool(*b, span),
87+
serde_yaml::Value::Number(n) if n.is_i64() => {
8888
Value::int(n.as_i64().ok_or(err_not_compatible_number)?, span)
8989
}
90-
serde_yml::Value::Number(n) if n.is_f64() => {
90+
serde_yaml::Value::Number(n) if n.is_f64() => {
9191
Value::float(n.as_f64().ok_or(err_not_compatible_number)?, span)
9292
}
93-
serde_yml::Value::String(s) => Value::string(s.to_string(), span),
94-
serde_yml::Value::Sequence(a) => {
93+
serde_yaml::Value::String(s) => Value::string(s.to_string(), span),
94+
serde_yaml::Value::Sequence(a) => {
9595
let result: Result<Vec<Value>, ShellError> = a
9696
.iter()
9797
.map(|x| convert_yaml_value_to_nu_value(x, span, val_span))
9898
.collect();
9999
Value::list(result?, span)
100100
}
101-
serde_yml::Value::Mapping(t) => {
101+
serde_yaml::Value::Mapping(t) => {
102102
// Using an IndexMap ensures consistent ordering
103103
let mut collected = IndexMap::new();
104104

@@ -111,19 +111,19 @@ fn convert_yaml_value_to_nu_value(
111111
input_span: val_span,
112112
};
113113
match (k, v) {
114-
(serde_yml::Value::Number(k), _) => {
114+
(serde_yaml::Value::Number(k), _) => {
115115
collected.insert(
116116
k.to_string(),
117117
convert_yaml_value_to_nu_value(v, span, val_span)?,
118118
);
119119
}
120-
(serde_yml::Value::Bool(k), _) => {
120+
(serde_yaml::Value::Bool(k), _) => {
121121
collected.insert(
122122
k.to_string(),
123123
convert_yaml_value_to_nu_value(v, span, val_span)?,
124124
);
125125
}
126-
(serde_yml::Value::String(k), _) => {
126+
(serde_yaml::Value::String(k), _) => {
127127
collected.insert(
128128
k.clone(),
129129
convert_yaml_value_to_nu_value(v, span, val_span)?,
@@ -132,16 +132,16 @@ fn convert_yaml_value_to_nu_value(
132132
// Hard-code fix for cases where "v" is a string without quotations with double curly braces
133133
// e.g. k = value
134134
// value: {{ something }}
135-
// Strangely, serde_yml returns
135+
// Strangely, serde_yaml returns
136136
// "value" -> Mapping(Mapping { map: {Mapping(Mapping { map: {String("something"): Null} }): Null} })
137-
(serde_yml::Value::Mapping(m), serde_yml::Value::Null) => {
137+
(serde_yaml::Value::Mapping(m), serde_yaml::Value::Null) => {
138138
return m
139139
.iter()
140140
.take(1)
141141
.collect_vec()
142142
.first()
143143
.and_then(|e| match e {
144-
(serde_yml::Value::String(s), serde_yml::Value::Null) => {
144+
(serde_yaml::Value::String(s), serde_yaml::Value::Null) => {
145145
Some(Value::string("{{ ".to_owned() + s.as_str() + " }}", span))
146146
}
147147
_ => None,
@@ -156,22 +156,22 @@ fn convert_yaml_value_to_nu_value(
156156

157157
Value::record(collected.into_iter().collect(), span)
158158
}
159-
serde_yml::Value::Tagged(t) => {
159+
serde_yaml::Value::Tagged(t) => {
160160
let tag = &t.tag;
161161
let value = match &t.value {
162-
serde_yml::Value::String(s) => {
162+
serde_yaml::Value::String(s) => {
163163
let val = format!("{} {}", tag, s).trim().to_string();
164164
Value::string(val, span)
165165
}
166-
serde_yml::Value::Number(n) => {
166+
serde_yaml::Value::Number(n) => {
167167
let val = format!("{} {}", tag, n).trim().to_string();
168168
Value::string(val, span)
169169
}
170-
serde_yml::Value::Bool(b) => {
170+
serde_yaml::Value::Bool(b) => {
171171
let val = format!("{} {}", tag, b).trim().to_string();
172172
Value::string(val, span)
173173
}
174-
serde_yml::Value::Null => {
174+
serde_yaml::Value::Null => {
175175
let val = format!("{}", tag).trim().to_string();
176176
Value::string(val, span)
177177
}
@@ -180,17 +180,17 @@ fn convert_yaml_value_to_nu_value(
180180

181181
value
182182
}
183-
serde_yml::Value::Null => Value::nothing(span),
183+
serde_yaml::Value::Null => Value::nothing(span),
184184
x => unimplemented!("Unsupported YAML case: {:?}", x),
185185
})
186186
}
187187

188188
pub fn from_yaml_string_to_value(s: &str, span: Span, val_span: Span) -> Result<Value, ShellError> {
189189
let mut documents = vec![];
190190

191-
for document in serde_yml::Deserializer::from_str(s) {
192-
let v: serde_yml::Value =
193-
serde_yml::Value::deserialize(document).map_err(|x| ShellError::UnsupportedInput {
191+
for document in serde_yaml::Deserializer::from_str(s) {
192+
let v: serde_yaml::Value =
193+
serde_yaml::Value::deserialize(document).map_err(|x| ShellError::UnsupportedInput {
194194
msg: format!("Could not load YAML: {x}"),
195195
input: "value originates from here".into(),
196196
msg_span: span,
@@ -393,8 +393,8 @@ mod test {
393393
];
394394

395395
for test_case in test_cases {
396-
let doc = serde_yml::Deserializer::from_str(test_case.input);
397-
let v: serde_yml::Value = serde_yml::Value::deserialize(doc.last().unwrap()).unwrap();
396+
let doc = serde_yaml::Deserializer::from_str(test_case.input);
397+
let v: serde_yaml::Value = serde_yaml::Value::deserialize(doc.last().unwrap()).unwrap();
398398
let result = convert_yaml_value_to_nu_value(&v, Span::test_data(), Span::test_data());
399399
assert!(result.is_ok());
400400
assert!(result.ok().unwrap() == test_case.expected.ok().unwrap());

crates/nu-command/src/formats/to/yaml.rs

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,29 @@ pub fn value_to_yaml_value(
5151
engine_state: &EngineState,
5252
v: &Value,
5353
serialize_types: bool,
54-
) -> Result<serde_yml::Value, ShellError> {
54+
) -> Result<serde_yaml::Value, ShellError> {
5555
Ok(match &v {
56-
Value::Bool { val, .. } => serde_yml::Value::Bool(*val),
57-
Value::Int { val, .. } => serde_yml::Value::Number(serde_yml::Number::from(*val)),
58-
Value::Filesize { val, .. } => serde_yml::Value::Number(serde_yml::Number::from(val.get())),
59-
Value::Duration { val, .. } => serde_yml::Value::String(val.to_string()),
60-
Value::Date { val, .. } => serde_yml::Value::String(val.to_string()),
61-
Value::Range { .. } => serde_yml::Value::Null,
62-
Value::Float { val, .. } => serde_yml::Value::Number(serde_yml::Number::from(*val)),
56+
Value::Bool { val, .. } => serde_yaml::Value::Bool(*val),
57+
Value::Int { val, .. } => serde_yaml::Value::Number(serde_yaml::Number::from(*val)),
58+
Value::Filesize { val, .. } => {
59+
serde_yaml::Value::Number(serde_yaml::Number::from(val.get()))
60+
}
61+
Value::Duration { val, .. } => serde_yaml::Value::String(val.to_string()),
62+
Value::Date { val, .. } => serde_yaml::Value::String(val.to_string()),
63+
Value::Range { .. } => serde_yaml::Value::Null,
64+
Value::Float { val, .. } => serde_yaml::Value::Number(serde_yaml::Number::from(*val)),
6365
Value::String { val, .. } | Value::Glob { val, .. } => {
64-
serde_yml::Value::String(val.clone())
66+
serde_yaml::Value::String(val.clone())
6567
}
6668
Value::Record { val, .. } => {
67-
let mut m = serde_yml::Mapping::new();
69+
let mut m = serde_yaml::Mapping::new();
6870
for (k, v) in &**val {
6971
m.insert(
70-
serde_yml::Value::String(k.clone()),
72+
serde_yaml::Value::String(k.clone()),
7173
value_to_yaml_value(engine_state, v, serialize_types)?,
7274
);
7375
}
74-
serde_yml::Value::Mapping(m)
76+
serde_yaml::Value::Mapping(m)
7577
}
7678
Value::List { vals, .. } => {
7779
let mut out = vec![];
@@ -80,44 +82,44 @@ pub fn value_to_yaml_value(
8082
out.push(value_to_yaml_value(engine_state, value, serialize_types)?);
8183
}
8284

83-
serde_yml::Value::Sequence(out)
85+
serde_yaml::Value::Sequence(out)
8486
}
8587
Value::Closure { val, .. } => {
8688
if serialize_types {
8789
let block = engine_state.get_block(val.block_id);
8890
if let Some(span) = block.span {
8991
let contents_bytes = engine_state.get_span_contents(span);
9092
let contents_string = String::from_utf8_lossy(contents_bytes);
91-
serde_yml::Value::String(contents_string.to_string())
93+
serde_yaml::Value::String(contents_string.to_string())
9294
} else {
93-
serde_yml::Value::String(format!(
95+
serde_yaml::Value::String(format!(
9496
"unable to retrieve block contents for yaml block_id {}",
9597
val.block_id.get()
9698
))
9799
}
98100
} else {
99-
serde_yml::Value::Null
101+
serde_yaml::Value::Null
100102
}
101103
}
102-
Value::Nothing { .. } => serde_yml::Value::Null,
104+
Value::Nothing { .. } => serde_yaml::Value::Null,
103105
Value::Error { error, .. } => return Err(*error.clone()),
104-
Value::Binary { val, .. } => serde_yml::Value::Sequence(
106+
Value::Binary { val, .. } => serde_yaml::Value::Sequence(
105107
val.iter()
106-
.map(|x| serde_yml::Value::Number(serde_yml::Number::from(*x)))
108+
.map(|x| serde_yaml::Value::Number(serde_yaml::Number::from(*x)))
107109
.collect(),
108110
),
109-
Value::CellPath { val, .. } => serde_yml::Value::Sequence(
111+
Value::CellPath { val, .. } => serde_yaml::Value::Sequence(
110112
val.members
111113
.iter()
112114
.map(|x| match &x {
113-
PathMember::String { val, .. } => Ok(serde_yml::Value::String(val.clone())),
115+
PathMember::String { val, .. } => Ok(serde_yaml::Value::String(val.clone())),
114116
PathMember::Int { val, .. } => {
115-
Ok(serde_yml::Value::Number(serde_yml::Number::from(*val)))
117+
Ok(serde_yaml::Value::Number(serde_yaml::Number::from(*val)))
116118
}
117119
})
118-
.collect::<Result<Vec<serde_yml::Value>, ShellError>>()?,
120+
.collect::<Result<Vec<serde_yaml::Value>, ShellError>>()?,
119121
),
120-
Value::Custom { .. } => serde_yml::Value::Null,
122+
Value::Custom { .. } => serde_yaml::Value::Null,
121123
})
122124
}
123125

@@ -135,9 +137,9 @@ fn to_yaml(
135137
let value = input.into_value(head)?;
136138

137139
let yaml_value = value_to_yaml_value(engine_state, &value, serialize_types)?;
138-
match serde_yml::to_string(&yaml_value) {
139-
Ok(serde_yml_string) => {
140-
Ok(Value::string(serde_yml_string, head)
140+
match serde_yaml::to_string(&yaml_value) {
141+
Ok(serde_yaml_string) => {
142+
Ok(Value::string(serde_yaml_string, head)
141143
.into_pipeline_data_with_metadata(Some(metadata)))
142144
}
143145
_ => Ok(Value::error(

crates/nu-command/tests/format_conversions/yaml.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ fn convert_dict_to_yaml_with_integer_floats_key() {
5050
}
5151

5252
#[test]
53+
#[ignore]
5354
fn convert_bool_to_yaml_in_yaml_spec_1_2() {
5455
let actual = nu!(pipeline(
5556
r#"

0 commit comments

Comments
 (0)