diff --git a/crates/ruff_dev/src/format_dev.rs b/crates/ruff_dev/src/format_dev.rs index 4f7f2a3f655ac..fa80101326b0e 100644 --- a/crates/ruff_dev/src/format_dev.rs +++ b/crates/ruff_dev/src/format_dev.rs @@ -18,6 +18,7 @@ use imara_diff::{diff, Algorithm}; use indicatif::ProgressStyle; #[cfg_attr(feature = "singlethreaded", allow(unused_imports))] use rayon::iter::{IntoParallelIterator, ParallelIterator}; +use ruff::line_width::LineLength; use serde::Deserialize; use similar::{ChangeTag, TextDiff}; use tempfile::NamedTempFile; @@ -36,10 +37,17 @@ use ruff_formatter::{FormatError, LineWidth, PrintError}; use ruff_python_formatter::{ format_module, FormatModuleError, MagicTrailingComma, PyFormatOptions, }; -use ruff_workspace::resolver::python_files_in_path; +use ruff_workspace::resolver::{python_files_in_path, PyprojectConfig, Resolver}; /// Find files that ruff would check so we can format them. Adapted from `ruff_cli`. -fn ruff_check_paths(dirs: &[PathBuf]) -> anyhow::Result>> { +#[allow(clippy::type_complexity)] +fn ruff_check_paths( + dirs: &[PathBuf], +) -> anyhow::Result<( + Vec>, + Resolver, + PyprojectConfig, +)> { let args_matches = FormatCommand::command() .no_binary_name(true) .get_matches_from(dirs); @@ -57,11 +65,11 @@ fn ruff_check_paths(dirs: &[PathBuf]) -> anyhow::Result anyhow::Result<(Result, PathBuf), Error> { let dir_entry = match dir_entry.context("Iterating the files in the repository failed") { Ok(dir_entry) => dir_entry, @@ -528,10 +545,17 @@ fn format_dir_entry( return Ok((Ok(Statistics::default()), file)); } - let file = dir_entry.path().to_path_buf(); - let options = options.to_py_format_options(&file); + let path = dir_entry.path().to_path_buf(); + let mut options = options.to_py_format_options(&path); + + let settings = resolver.resolve(&path, pyproject_config); + // That's a bad way of doing this but it's not worth doing something better for format_dev + if settings.line_length != LineLength::default() { + options = options.with_line_width(LineWidth::from(NonZeroU16::from(settings.line_length))); + } + // Handle panics (mostly in `debug_assert!`) - let result = match catch_unwind(|| format_dev_file(&file, stability_check, write, options)) { + let result = match catch_unwind(|| format_dev_file(&path, stability_check, write, options)) { Ok(result) => result, Err(panic) => { if let Some(message) = panic.downcast_ref::() { @@ -550,7 +574,7 @@ fn format_dir_entry( } } }; - Ok((result, file)) + Ok((result, path)) } /// A compact diff that only shows a header and changes, but nothing unchanged. This makes viewing diff --git a/crates/ruff_python_formatter/src/lib.rs b/crates/ruff_python_formatter/src/lib.rs index 51ff0ed3ed04c..f73ad2d0df84c 100644 --- a/crates/ruff_python_formatter/src/lib.rs +++ b/crates/ruff_python_formatter/src/lib.rs @@ -273,10 +273,7 @@ for converter in connection.ops.get_db_converters( struct FormatString<'a>(&'a str); impl Format for FormatString<'_> { - fn fmt( - &self, - f: &mut ruff_formatter::formatter::Formatter, - ) -> FormatResult<()> { + fn fmt(&self, f: &mut Formatter) -> FormatResult<()> { let format_str = format_with(|f| { write!(f, [token("\"")])?;