diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/global.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/global.py new file mode 100644 index 0000000000000..faec9b9e81ff7 --- /dev/null +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/global.py @@ -0,0 +1,12 @@ +def f(): + global x, y, z + + +def f(): + # leading comment + global x, y, z # end-of-line comment + # trailing comment + + +def f(): + global analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/nonlocal.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/nonlocal.py new file mode 100644 index 0000000000000..2699c513bf9a0 --- /dev/null +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/nonlocal.py @@ -0,0 +1,12 @@ +def f(): + nonlocal x, y, z + + +def f(): + # leading comment + nonlocal x, y, z # end-of-line comment + # trailing comment + + +def f(): + nonlocal analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model diff --git a/crates/ruff_python_formatter/src/statement/stmt_global.rs b/crates/ruff_python_formatter/src/statement/stmt_global.rs index cf5ec1db9278e..abdaf7c710492 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_global.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_global.rs @@ -1,12 +1,18 @@ -use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; -use ruff_formatter::{write, Buffer, FormatResult}; +use ruff_formatter::{format_args, write}; use ruff_python_ast::StmtGlobal; +use crate::prelude::*; +use crate::FormatNodeRule; + #[derive(Default)] pub struct FormatStmtGlobal; impl FormatNodeRule for FormatStmtGlobal { fn fmt_fields(&self, item: &StmtGlobal, f: &mut PyFormatter) -> FormatResult<()> { - write!(f, [not_yet_implemented(item)]) + write!(f, [text("global"), space()])?; + + f.join_with(format_args![text(","), space()]) + .entries(item.names.iter().formatted()) + .finish() } } diff --git a/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs b/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs index e1cb22cfbdbd1..f3dd3b1966165 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs @@ -1,12 +1,18 @@ -use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; -use ruff_formatter::{write, Buffer, FormatResult}; +use ruff_formatter::{format_args, write}; use ruff_python_ast::StmtNonlocal; +use crate::prelude::*; +use crate::FormatNodeRule; + #[derive(Default)] pub struct FormatStmtNonlocal; impl FormatNodeRule for FormatStmtNonlocal { fn fmt_fields(&self, item: &StmtNonlocal, f: &mut PyFormatter) -> FormatResult<()> { - write!(f, [not_yet_implemented(item)]) + write!(f, [text("nonlocal"), space()])?; + + f.join_with(format_args![text(","), space()]) + .entries(item.names.iter().formatted()) + .finish() } } diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__global.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__global.py.snap new file mode 100644 index 0000000000000..1181cdba309ae --- /dev/null +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__global.py.snap @@ -0,0 +1,38 @@ +--- +source: crates/ruff_python_formatter/tests/fixtures.rs +input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/global.py +--- +## Input +```py +def f(): + global x, y, z + + +def f(): + # leading comment + global x, y, z # end-of-line comment + # trailing comment + + +def f(): + global analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model +``` + +## Output +```py +def f(): + global x, y, z + + +def f(): + # leading comment + global x, y, z # end-of-line comment + # trailing comment + + +def f(): + global analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model +``` + + + diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__nonlocal.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__nonlocal.py.snap new file mode 100644 index 0000000000000..fbffb2ede9ffe --- /dev/null +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__nonlocal.py.snap @@ -0,0 +1,38 @@ +--- +source: crates/ruff_python_formatter/tests/fixtures.rs +input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/nonlocal.py +--- +## Input +```py +def f(): + nonlocal x, y, z + + +def f(): + # leading comment + nonlocal x, y, z # end-of-line comment + # trailing comment + + +def f(): + nonlocal analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model +``` + +## Output +```py +def f(): + nonlocal x, y, z + + +def f(): + # leading comment + nonlocal x, y, z # end-of-line comment + # trailing comment + + +def f(): + nonlocal analyze_featuremap_layer, analyze_featuremapcompression_layer, analyze_latencies_post, analyze_motions_layer, analyze_size_model +``` + + +