Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
**Summary** `ruff format --diff` is similar to `ruff format --check`, but we don't only error with the list of file that would be formatted, but also show a diff between the unformatted input and the formatted output. ```console $ ruff format --diff scratch.py scratch.pyi scratch.ipynb warning: `ruff format` is not yet stable, and subject to change in future versions. --- scratch.ipynb +++ scratch.ipynb @@ -1,3 +1,4 @@ import numpy -maths = (numpy.arange(100)**2).sum() -stats= numpy.asarray([1,2,3,4]).median() + +maths = (numpy.arange(100) ** 2).sum() +stats = numpy.asarray([1, 2, 3, 4]).median() --- scratch.py +++ scratch.py @@ -1,3 +1,3 @@ x = 1 -y=2 +y = 2 z = 3 2 files would be reformatted, 1 file left unchanged ``` With `--diff`, the summary message gets printed to stderr to allow e.g. `ruff format --diff . > format.patch`. At the moment, jupyter notebooks are formatted as code diffs, while everything else is a real diff that could be applied. This means that the diffs containing jupyter notebooks are not real diffs and can't be applied. We could change this to json diffs, but they are hard to read. We could also split the diff option into a human diff option, where we deviate from the machine readable diff constraints, and a proper machine readable, appliable diff output that you can pipe into other tools. To make the tests work, the results (and errors, if any) are sorted before printing them. Previously, the print order was random, i.e. two identical runs could have different output. Open question: Should this go into the markdown docs? Or will this be subsumed by the integration of the formatter into `ruff check`? **Test plan** Fixtures for the change and no change cases, including a jupyter notebook and for file input and stdin. Fixes #7231 --------- Co-authored-by: Micha Reiser <micha@reiser.io>
- Loading branch information