mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 12:05:52 +00:00 
			
		
		
		
	 afcd00da56
			
		
	
	
		afcd00da56
		
			
		
	
	
	
	
		
			
			## Summary This PR moves `ruff/jupyter` into its own `ruff_notebook` crate. Beyond the move itself, there were a few challenges: 1. `ruff_notebook` relies on the source map abstraction. I've moved the source map into `ruff_diagnostics`, since it doesn't have any dependencies on its own and is used alongside diagnostics. 2. `ruff_notebook` has a couple tests for end-to-end linting and autofixing. I had to leave these tests in `ruff` itself. 3. We had code in `ruff/jupyter` that relied on Python lexing, in order to provide a more targeted error message in the event that a user saves a `.py` file with a `.ipynb` extension. I removed this in order to avoid a dependency on the parser, it felt like it wasn't worth retaining just for that dependency. ## Test Plan `cargo test`
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			877 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			877 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| /// Jupyter Notebook indexing table
 | |
| ///
 | |
| /// When we lint a jupyter notebook, we have to translate the row/column based on
 | |
| /// [`ruff_text_size::TextSize`] to jupyter notebook cell/row/column.
 | |
| #[derive(Clone, Debug, Eq, PartialEq)]
 | |
| pub struct NotebookIndex {
 | |
|     /// Enter a row (1-based), get back the cell (1-based)
 | |
|     pub(super) row_to_cell: Vec<u32>,
 | |
|     /// Enter a row (1-based), get back the row in cell (1-based)
 | |
|     pub(super) row_to_row_in_cell: Vec<u32>,
 | |
| }
 | |
| 
 | |
| impl NotebookIndex {
 | |
|     /// Returns the cell number (1-based) for the given row (1-based).
 | |
|     pub fn cell(&self, row: usize) -> Option<u32> {
 | |
|         self.row_to_cell.get(row).copied()
 | |
|     }
 | |
| 
 | |
|     /// Returns the row number (1-based) in the cell (1-based) for the
 | |
|     /// given row (1-based).
 | |
|     pub fn cell_row(&self, row: usize) -> Option<u32> {
 | |
|         self.row_to_row_in_cell.get(row).copied()
 | |
|     }
 | |
| }
 |