Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ebdc4afc33 
								
							 
						 
						
							
							
								
								Suite formatting and JoinNodesBuilder ( #4805 )  
							
							
							
						 
						
							2023-06-02 14:14:38 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								a401989b7a 
								
							 
						 
						
							
							
								
								Format StmtExpr ( #4788 )  
							
							
							
						 
						
							2023-06-02 12:52:38 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								4cd4b37e74 
								
							 
						 
						
							
							
								
								Format the comment content ( #4786 )  
							
							
							
						 
						
							2023-06-02 11:22:34 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									konstin 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c4fdbf8903 
								
							 
						 
						
							
							
								
								Switch PyFormatter lifetimes ( #4804 )  
							
							... 
							
							
							
							Stylistic change to have the input lifetime first and the output lifetime second. I'll rebase my other PR on top of this.
Test plan: `cargo clippy` 
							
						 
						
							2023-06-02 12:26:39 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								5d939222db 
								
							 
						 
						
							
							
								
								Leading, Dangling, and Trailing comments formatting ( #4785 )  
							
							
							
						 
						
							2023-06-02 09:26:36 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									konstin 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								63d892f1e4 
								
							 
						 
						
							
							
								
								Implement basic module formatting  ( #4784 )  
							
							... 
							
							
							
							* Add Format for Stmt
* Implement basic module formatting
This implements formatting each statement in a module with a hard line break in between, so that we can start formatting statements.
Basic testing is done by the snapshots 
							
						 
						
							2023-06-01 15:25:50 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								4ea4fd1984 
								
							 
						 
						
							
							
								
								Introduce lines_before helper ( #4780 )  
							
							
							
						 
						
							2023-06-01 11:56:43 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									konstin 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d4027d8b65 
								
							 
						 
						
							
							
								
								Use new formatter infrastructure in CLI and test ( #4767 )  
							
							... 
							
							
							
							* Use dummy verbatim formatter for all nodes
* Use new formatter infrastructure in CLI and test
* Expose the new formatter in the CLI
* Merge import blocks 
							
						 
						
							2023-06-01 11:55:04 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									konstin 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9bf168c0a4 
								
							 
						 
						
							
							
								
								Use dummy verbatim formatter for all nodes ( #4755 )  
							
							
							
						 
						
							2023-06-01 08:25:26 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								59148344be 
								
							 
						 
						
							
							
								
								Place comments of left and right binary expression operands ( #4751 )  
							
							
							
						 
						
							2023-06-01 07:01:32 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									konstin 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0945803427 
								
							 
						 
						
							
							
								
								Generate FormatRule definitions ( #4724 )  
							
							... 
							
							
							
							* Generate FormatRule definitions
* Generate verbatim output
* pub(crate) everything
* clippy fix
* Update crates/ruff_python_formatter/src/lib.rs
Co-authored-by: Micha Reiser <micha@reiser.io>
* Update crates/ruff_python_formatter/src/lib.rs
Co-authored-by: Micha Reiser <micha@reiser.io>
* stub out with Ok(()) again
* Update crates/ruff_python_formatter/src/lib.rs
Co-authored-by: Micha Reiser <micha@reiser.io>
* PyFormatContext::{contents, locator} with `#[allow(unused)]`
* Can't leak private type
* remove commented code
* Fix ruff errors
* pub struct Format{node} due to rust rules
---------
Co-authored-by: Julian LaNeve <lanevejulian@gmail.com>
Co-authored-by: Micha Reiser <micha@reiser.io> 
							
						 
						
							2023-06-01 08:38:53 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								b7294b48e7 
								
							 
						 
						
							
							
								
								Handle positional-only-arguments separator comments ( #4748 )  
							
							
							
						 
						
							2023-06-01 06:22:49 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								be31d71849 
								
							 
						 
						
							
							
								
								Correctly associate own-line comments in bodies ( #4671 )  
							
							
							
						 
						
							2023-06-01 08:12:53 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								9d0ffd33ca 
								
							 
						 
						
							
							
								
								Move universal newline handling into its own crate ( #4729 )  
							
							
							
						 
						
							2023-05-31 12:00:47 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								e209b5fc5f 
								
							 
						 
						
							
							
								
								Add reformat check ( #4753 )  
							
							
							
						 
						
							2023-05-31 17:36:15 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6c1ff6a85f 
								
							 
						 
						
							
							
								
								Upgrade RustPython ( #4747 )  
							
							
							
						 
						
							2023-05-31 08:26:35 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								06bcb85f81 
								
							 
						 
						
							
							
								
								formatter: Remove CST and old formatting ( #4730 )  
							
							
							
						 
						
							2023-05-31 08:27:23 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0cd453bdf0 
								
							 
						 
						
							
							
								
								Generic "comment to node" association logic ( #4642 )  
							
							
							
						 
						
							2023-05-30 09:28:01 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								84a5584888 
								
							 
						 
						
							
							
								
								Add Comments data structure ( #4641 )  
							
							
							
						 
						
							2023-05-30 08:54:55 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6146b75dd0 
								
							 
						 
						
							
							
								
								Add MultiMap implementation for storing comments ( #4639 )  
							
							
							
						 
						
							2023-05-30 09:51:25 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								edc6c4058f 
								
							 
						 
						
							
							
								
								Move shared_traits to ruff_formatter ( #4632 )  
							
							
							
						 
						
							2023-05-24 17:38:11 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								86ced3516b 
								
							 
						 
						
							
							
								
								Introduce SourceCodeSlice to reduce the size of FormatElement ( #4622 )  
							
							... 
							
							
							
							Introduce `SourceCodeSlice` to reduce the size of `FormatElement` 
							
						 
						
							2023-05-24 15:04:52 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								6943beee66 
								
							 
						 
						
							
							
								
								Remove source position from FormatElement::DynamicText ( #4619 )  
							
							
							
						 
						
							2023-05-24 16:36:14 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								daadd24bde 
								
							 
						 
						
							
							
								
								Include decorators in Function and Class definition ranges ( #4467 )  
							
							
							
						 
						
							2023-05-22 17:50:42 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								e8e66f3824 
								
							 
						 
						
							
							
								
								Remove unnecessary path prefixes ( #4492 )  
							
							
							
						 
						
							2023-05-18 10:19:09 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ddf7de7e86 
								
							 
						 
						
							
							
								
								Prototype Black's string joining/splitting ( #4449 )  
							
							
							
						 
						
							2023-05-16 18:42:40 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jeong, YunWon 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								4b05ca1198 
								
							 
						 
						
							
							
								
								Specialize ConversionFlag ( #4450 )  
							
							
							
						 
						
							2023-05-16 18:00:13 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f0465bf106 
								
							 
						 
						
							
							
								
								Emit non-logical newlines for "empty" lines ( #4444 )  
							
							
							
						 
						
							2023-05-16 14:58:56 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								fa26860296 
								
							 
						 
						
							
							
								
								Refactor range from Attributed to Nodes ( #4422 )  
							
							
							
						 
						
							2023-05-16 06:36:32 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jonathan Plasse 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c10a4535b9 
								
							 
						 
						
							
							
								
								Disallow unreachable_pub ( #4314 )  
							
							
							
						 
						
							2023-05-11 18:00:00 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								1ccef5150d 
								
							 
						 
						
							
							
								
								Remove lifetime from FormatContext ( #4376 )  
							
							
							
						 
						
							2023-05-11 15:43:42 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jeong, YunWon 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								be6e00ef6e 
								
							 
						 
						
							
							
								
								Re-integrate RustPython parser repository ( #4359 )  
							
							... 
							
							
							
							Co-authored-by: Micha Reiser <micha@reiser.io> 
							
						 
						
							2023-05-11 07:47:17 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Calum Young 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f0f4bf2929 
								
							 
						 
						
							
							
								
								Move typos to pre-commit config ( #4148 )  
							
							
							
						 
						
							2023-04-29 12:13:35 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								cab65b25da 
								
							 
						 
						
							
							
								
								Replace row/column based Location with byte-offsets. ( #3931 )  
							
							
							
						 
						
							2023-04-26 18:11:02 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								381203c084 
								
							 
						 
						
							
							
								
								Store source code on message ( #3897 )  
							
							
							
						 
						
							2023-04-11 07:57:36 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Micha Reiser 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								76c47a9a43 
								
							 
						 
						
							
							
								
								Cheap cloneable LineIndex ( #3896 )  
							
							
							
						 
						
							2023-04-11 07:33:40 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d919adc13c 
								
							 
						 
						
							
							
								
								Introduce a ruff_python_semantic crate ( #3865 )  
							
							
							
						 
						
							2023-04-04 16:50:47 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								cf7e1ddd08 
								
							 
						 
						
							
							
								
								Remove some usize references ( #3819 )  
							
							
							
						 
						
							2023-03-30 17:35:42 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								c2750a59ab 
								
							 
						 
						
							
							
								
								Implement an iterator for universal newlines ( #3454 )  
							
							... 
							
							
							
							# Summary
We need to support CR line endings (as opposed to LF and CRLF line endings, which are already supported). They're rare, but they do appear in Python code, and we tend to panic on any file that uses them.
Our `Locator` abstraction now supports CR line endings. However, Rust's `str#lines` implementation does _not_.
This PR adds a `UniversalNewlineIterator` implementation that respects all of CR, LF, and CRLF line endings, and plugs it into most of the `.lines()` call sites.
As an alternative design, it could be nice if we could leverage `Locator` for this. We've already computed all of the line endings, so we could probably iterate much more efficiently?
# Test Plan
Largely relying on automated testing, however, also ran over some known failure cases, like #3404 . 
							
						 
						
							2023-03-13 00:01:29 -04:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								da1f83fe32 
								
							 
						 
						
							
							
								
								Remove core module from ruff_python_formatter ( #3373 )  
							
							
							
						 
						
							2023-03-08 19:11:39 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								0a9d259f9c 
								
							 
						 
						
							
							
								
								Remove copied core modules from ruff_python_formatter ( #3371 )  
							
							
							
						 
						
							2023-03-08 19:03:40 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								130e733023 
								
							 
						 
						
							
							
								
								Implement From<Located> for Range ( #3377 )  
							
							
							
						 
						
							2023-03-08 18:50:20 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								ff2c0dd491 
								
							 
						 
						
							
							
								
								Use shared leading_quote implementation in ruff_python_formatter ( #3396 )  
							
							
							
						 
						
							2023-03-08 18:21:59 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								d1c48016eb 
								
							 
						 
						
							
							
								
								Rename ruff_python crate to ruff_python_stdlib ( #3354 )  
							
							... 
							
							
							
							In hindsight, `ruff_python` is too general. A good giveaway is that it's actually a prefix of some other crates. The intent of this crate is to reimplement pieces of the Python standard library and CPython itself, so `ruff_python_stdlib` feels appropriate. 
							
						 
						
							2023-03-06 13:43:22 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jonathan Plasse 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								8828e12283 
								
							 
						 
						
							
							
								
								Bump dependencies and move more shared dependencies into workspace ( #3340 )  
							
							
							
						 
						
							2023-03-04 12:36:26 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								f5f09b489b 
								
							 
						 
						
							
							
								
								Introduce dedicated CST tokens for other operator kinds ( #3267 )  
							
							
							
						 
						
							2023-02-27 23:54:57 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								061495a9eb 
								
							 
						 
						
							
							
								
								Make BoolOp its own located token ( #3265 )  
							
							
							
						 
						
							2023-02-28 03:43:28 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								470e1c1754 
								
							 
						 
						
							
							
								
								Preserve comments on non-defaulted arguments ( #3264 )  
							
							
							
						 
						
							2023-02-27 23:41:40 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								16be691712 
								
							 
						 
						
							
							
								
								Enable more non-panicking formatter tests ( #3262 )  
							
							
							
						 
						
							2023-02-27 18:21:53 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Charlie Marsh 
								
							 
						 
						
							
							
								
								
							
							
							
								
							
							
								2261e194a0 
								
							 
						 
						
							
							
								
								Create dedicated Body nodes in the formatter CST ( #3223 )  
							
							
							
						 
						
							2023-02-27 22:55:05 +00:00