d0aab9212a
test release tool / test-release-tool (macOS-latest, 3.12) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.13) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.14) (push) Waiting to run
test release tool / test-release-tool (macOS-latest, 3.15) (push) Waiting to run
docker / build (linux/arm64) (push) Waiting to run
docker / push (push) Blocked by required conditions
docs / docs (windows-latest) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.12) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.13) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.14) (push) Waiting to run
test release tool / test-release-tool (windows-latest, 3.15) (push) Waiting to run
test / test (macOS-latest, 3.10) (push) Waiting to run
test / test (macOS-latest, 3.11) (push) Waiting to run
test / test (macOS-latest, 3.12.10) (push) Waiting to run
test / test (macOS-latest, 3.13) (push) Waiting to run
test / test (macOS-latest, 3.14) (push) Waiting to run
test / test (macOS-latest, 3.15) (push) Waiting to run
test / test (macOS-latest, pypy3.11-v7.3.22) (push) Waiting to run
test / test (windows-11-arm, 3.11) (push) Waiting to run
test / test (windows-11-arm, 3.12.10) (push) Waiting to run
test / test (windows-11-arm, 3.13) (push) Waiting to run
test / test (windows-11-arm, 3.14) (push) Waiting to run
test / test (windows-11-arm, 3.15) (push) Waiting to run
test / test (windows-latest, 3.10) (push) Waiting to run
test / test (windows-latest, 3.11) (push) Waiting to run
test / test (windows-latest, 3.12.10) (push) Waiting to run
test / test (windows-latest, 3.13) (push) Waiting to run
test / test (windows-latest, 3.14) (push) Waiting to run
test / test (windows-latest, 3.15) (push) Waiting to run
test / test (windows-latest, pypy3.11-v7.3.22) (push) Waiting to run
test / coveralls-finish (push) Blocked by required conditions
test / uvloop (macOS-latest) (push) Waiting to run
test / uvloop (windows-11-arm) (push) Waiting to run
test / uvloop (windows-latest) (push) Waiting to run
fuzz / fuzz (3.11) (push) Failing after 1s
fuzz / fuzz (3.12) (push) Failing after 1s
build and publish / sdist + pure wheel (push) Failing after 0s
diff-shades / analysis / base / ${{ matrix.mode }} (push) Has been skipped
diff-shades / compare / ${{ matrix.mode }} (push) Waiting to run
docs / docs (ubuntu-latest) (push) Failing after 2s
fuzz / fuzz (3.10) (push) Failing after 1s
fuzz / fuzz (3.14) (push) Failing after 0s
lint and format / lint (push) Failing after 1s
build and publish / publish-mypyc (push) Waiting to run
diff-shades / configure (push) Failing after 1s
docker / build (linux/amd64) (push) Has been skipped
diff-shades / analysis / target / ${{ matrix.mode }} (push) Has been skipped
fuzz / fuzz (3.13) (push) Failing after 0s
fuzz / create-issue (push) Waiting to run
build and publish / generate wheels matrix (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.13) (push) Failing after 1s
build and publish / mypyc wheels ${{ matrix.only }} (push) Has been skipped
build and publish / publish-hatch (push) Waiting to run
test / test (ubuntu-latest, 3.10) (push) Failing after 0s
test / test (ubuntu-latest, 3.11) (push) Failing after 1s
test / test (ubuntu-latest, 3.13) (push) Failing after 0s
test / test (ubuntu-latest, pypy3.11-v7.3.22) (push) Failing after 1s
test / test (ubuntu-latest, 3.15) (push) Failing after 1s
test release tool / test-release-tool (ubuntu-latest, 3.15) (push) Failing after 0s
zizmor / zizmor (push) Failing after 0s
test release tool / test-release-tool (ubuntu-latest, 3.12) (push) Failing after 4s
test release tool / test-release-tool (ubuntu-latest, 3.14) (push) Failing after 3s
test / uvloop (ubuntu-latest) (push) Failing after 1s
test / test (ubuntu-latest, 3.14) (push) Failing after 1s
test / test (ubuntu-latest, 3.12.10) (push) Failing after 5s
58 lines
2.7 KiB
Markdown
58 lines
2.7 KiB
Markdown
# Gauging changes
|
|
|
|
A lot of the time, your change will affect formatting and/or performance. Quantifying
|
|
these changes is hard, so we have tooling to help make it easier.
|
|
|
|
It's recommended you evaluate the quantifiable changes your _Black_ formatting
|
|
modification causes before submitting a PR. Think about if the change seems disruptive
|
|
enough to cause frustration to projects that are already "Black-formatted".
|
|
|
|
## diff-shades
|
|
|
|
diff-shades is a tool that runs _Black_ across a list of open-source projects recording
|
|
the results. The main highlight feature of diff-shades is being able to compare two
|
|
revisions of _Black_. This is incredibly useful as it allows us to see what exact
|
|
changes will occur, say merging a certain PR.
|
|
|
|
For more information, please see the [diff-shades documentation][diff-shades].
|
|
|
|
### CI integration
|
|
|
|
diff-shades is also the tool behind the "diff-shades results comparing ..." comments on
|
|
PRs. The project has a GitHub Actions workflow that analyzes and compares two revisions
|
|
of _Black_ according to these rules:
|
|
|
|
| | Baseline revision | Target revision |
|
|
| --------------------- | ------------------------------- | ---------------------------- |
|
|
| On PRs | latest commit on PR base branch | PR commit with `main` merged |
|
|
| On pushes (main only) | latest PyPI version | the pushed commit |
|
|
|
|
For pushes to main, there's only one analysis job named `preview-new-changes` where the
|
|
preview style is used for all projects.
|
|
|
|
For PRs they get one more analysis job: `assert-no-changes`. It's similar to
|
|
`preview-new-changes` but runs with the stable code style. It will fail if changes were
|
|
made. This makes sure code won't be reformatted again and again within the same year in
|
|
accordance to Black's stability policy.
|
|
|
|
Additionally for PRs, a PR comment will be posted embedding a summary previewing any
|
|
changes in both styles and links to further information. The next time the workflow is
|
|
triggered on the same PR, it'll update the pre-existing diff-shades comment.
|
|
|
|
```{note}
|
|
Jobs will only fail intentionally if a file failed to format while analyzing, or if
|
|
changes were made to the stable style. Otherwise a failure indicates a bug in the
|
|
workflow.
|
|
```
|
|
|
|
The workflow uploads several artifacts upon completion:
|
|
|
|
- HTML diffs (.html)
|
|
- handy for pushes where there's no PR to post a comment
|
|
- The raw analyses (.json)
|
|
- in case you want to do further analysis using the collected data locally
|
|
- `.preview.pr-comment.md` and `.stable.pr-comment.md` (if triggered by a PR)
|
|
- used to generate the PR comment and shouldn't be downloaded
|
|
|
|
[diff-shades]: https://github.com/ichard26/diff-shades#readme
|