#4430·black

`--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:

python
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:

bash
$ black --line-ranges 1-9 file.py

The result is:

python
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:

python
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.