ruff/crates/ruff_python_formatter
Carl Meyer c80b9a4a90
Reduce size of Stmt from 144 to 120 bytes (#11051)
## Summary

I happened to notice that we box `TypeParams` on `StmtClassDef` but not
on `StmtFunctionDef` and wondered why, since `StmtFunctionDef` is bigger
and sets the size of `Stmt`.

@charliermarsh found that at the time we started boxing type params on
classes, classes were the largest statement type (see #6275), but that's
no longer true.

So boxing type-params also on functions reduces the overall size of
`Stmt`.

## Test Plan

The `<=` size tests are a bit irritating (since their failure doesn't
tell you the actual size), but I manually confirmed that the size is
actually 120 now.
2024-04-19 17:02:17 -06:00
..
resources/test/fixtures Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
src Reduce size of Stmt from 144 to 120 bytes (#11051) 2024-04-19 17:02:17 -06:00
tests Replace LALRPOP parser with hand-written parser (#10036) 2024-04-18 17:57:39 +05:30
Cargo.toml Simplify formatting of strings by using flags from the AST nodes (#10489) 2024-03-20 16:16:54 +00:00
CONTRIBUTING.md Fix typo in documentation (#9069) 2023-12-09 16:06:49 +00:00
generate.py Split string formatting to individual nodes (#9058) 2023-12-14 12:55:10 -06:00
orphan_rules_in_the_formatter.svg
README.md Move deviations from formatter README to documentation (#10444) 2024-03-18 08:22:28 +00:00
shrink_formatter_errors.py

Ruff Formatter

The Ruff formatter is an extremely fast Python code formatter that ships as part of the ruff CLI.

Goals

The formatter is designed to be a drop-in replacement for Black, but with an excessive focus on performance and direct integration with Ruff.

Specifically, the formatter is intended to emit near-identical output when run over Black-formatted code. When run over extensive Black-formatted projects like Django and Zulip, > 99.9% of lines are formatted identically. When migrating an existing project from Black to Ruff, you should expect to see a few differences on the margins, but the vast majority of your code should be unchanged.

If you identify deviations in your project, spot-check them against the intentional deviations enumerated below, as well as the unintentional deviations filed in the issue tracker. If you've identified a new deviation, please file an issue.

When run over non-Black-formatted code, the formatter makes some different decisions than Black, and so more deviations should be expected, especially around the treatment of end-of-line comments. For details, see Black compatibility.

Getting started

The Ruff formatter is available as of Ruff v0.1.2. Head to The Ruff Formatter for usage instructions and a comparison to Black.