-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Formatter: Add an option to show formatting changes when running --check
#7231
Milestone
Comments
MichaReiser
added
cli
Related to the command-line interface
formatter
Related to the formatter
labels
Sep 8, 2023
MichaReiser
changed the title
Formatter: Add
Formatter: Add Sep 8, 2023
--diff
option to CLI--diff
option to CLI or respect format
configuration
MichaReiser
changed the title
Formatter: Add
Formatter: Add an option to show formatting changes when running Sep 8, 2023
--diff
option to CLI or respect format
configuration--check
I believe we've settled on |
konstin
added a commit
that referenced
this issue
Oct 18, 2023
**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>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There are two options:
--diff
option toruff format --check
that prints the formatting changes similar to Black--check
uses Ruff's diagnostic system and shows diffs forformat: human
but not forformat: compact
(which would enable diffs by default)I prefer option 2.
Open questions
cargo dev
script for large files / large changesCC @zanieb regarding CLI design
The text was updated successfully, but these errors were encountered: