`--line-ranges` formats lines outside of range
Author: rhenckeCreated Aug 6, 2024Updated Sep 13, 2026
LabelsT: bug
Describe the bug
Black's --line-ranges option does not completely prevent reformatting of code outside of the specified line ranges.
To Reproduce
For example, take this code:
print("format me" )
# format whitespace
# format whitespace
# format whitespace
print( "format me" )
# format whitespace
# format whitespace
# format whitespace
print( "format me")
print("don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me")And run it with these arguments:
$ black --line-ranges 1-9 file.pyThe result is:
print("format me")
# whitespace
# whitespace
# whitespace
print("format me")
# whitespace
# whitespace
# whitespace
print("format me")
print("don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me")Expected behavior
The expected result would be the formatting constrains itself to lines 1 through 9, and does not modify whitespace outside of this line range:
print("format me")
# format whitespace
# format whitespace
# format whitespace
print("format me")
# format whitespace
# format whitespace
# format whitespace
print("format me")
print("don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me" )
# don't format whitespace
# don't format whitespace
# don't format whitespace
print( "don't format me")Note both the three-line separation as well as the indentation would be preserved as they are outside of the line range 1-9.
Environment
- Black's version:
black, 24.8.0 (compiled: yes)
Python (CPython) 3.11.9- OS and Python version: OS is macOS 14.5 (23F79). Python is 3.11.9
Additional context
It would be useful for --line-ranges to only format what is contained within the specified line ranges, as much as possible, to allow for incremental adoption of formatting in larger code bases.
Source: psf/black