mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Fixes #10639: reindent.py should not convert newlines
reindent.py now will use the newline detected in the original file and will report an error if mixed newlines are encountered.
This commit is contained in:
		
							parent
							
								
									45dedaafc2
								
							
						
					
					
						commit
						76748b7033
					
				
					 2 changed files with 18 additions and 3 deletions
				
			
		|  | @ -310,6 +310,12 @@ Build | |||
|   "make install" creates symlinks in --prefix bin for the "-32" files in the | ||||
|   framework bin directory like the installer does. | ||||
| 
 | ||||
| Tools/Demos | ||||
| ----------- | ||||
| 
 | ||||
| - Issue #10639: reindent.py no longer converts newlines and will raise | ||||
|   an error if attempting to convert a file with mixed newlines. | ||||
| 
 | ||||
| Tests | ||||
| ----- | ||||
| 
 | ||||
|  |  | |||
|  | @ -35,7 +35,7 @@ | |||
| 
 | ||||
| The backup file is a copy of the one that is being reindented. The ".bak" | ||||
| file is generated with shutil.copy(), but some corner cases regarding | ||||
| user/group and permissions could leave the backup file more readable that | ||||
| user/group and permissions could leave the backup file more readable than | ||||
| you'd prefer. You can always use the --nobackup option to prevent this. | ||||
| """ | ||||
| 
 | ||||
|  | @ -118,6 +118,11 @@ def check(file): | |||
|         errprint("%s: I/O Error: %s" % (file, str(msg))) | ||||
|         return | ||||
| 
 | ||||
|     newline = r.newlines | ||||
|     if isinstance(newline, tuple): | ||||
|         errprint("%s: mixed newlines detected; cannot process file" % file) | ||||
|         return | ||||
| 
 | ||||
|     if r.run(): | ||||
|         if verbose: | ||||
|             print("changed.") | ||||
|  | @ -129,7 +134,7 @@ def check(file): | |||
|                 shutil.copyfile(file, bak) | ||||
|                 if verbose: | ||||
|                     print("backed up", file, "to", bak) | ||||
|             with open(file, "w", encoding=encoding) as f: | ||||
|             with open(file, "w", encoding=encoding, newline=newline) as f: | ||||
|                 r.write(f) | ||||
|             if verbose: | ||||
|                 print("wrote new", file) | ||||
|  | @ -177,6 +182,10 @@ def __init__(self, f): | |||
|         # indeed, they're our headache! | ||||
|         self.stats = [] | ||||
| 
 | ||||
|         # Save the newlines found in the file so they can be used to | ||||
|         #  create output without mutating the newlines. | ||||
|         self.newlines = f.newlines | ||||
| 
 | ||||
|     def run(self): | ||||
|         tokens = tokenize.generate_tokens(self.getline) | ||||
|         for _token in tokens: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jason R. Coombs
						Jason R. Coombs