HomeDocs
DocsCommunityTestimonialsUsersGitHubTwitterBlogJobsTermsPrivacyCookies
TermsPrivacyCookies
Hey! These docs are for version 2.10, which is no longer officially supported. Click here for the latest version, 2.18!




Autoformat source code.

Backend: <span style="color: purple"><code>pants.core</code></span> Config section: <span style="color: purple"><code>[fmt]</code></span>

## Basic options

<div style="color: purple"> <h3><code>only</code></h3> <code>--fmt-only=&quot;['&lt;str&gt;', '&lt;str&gt;', ...]&quot;</code><br> <code>PANTS_FMT_ONLY</code><br> </div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>[]</code></span>

<br>

Only run these formatters and skip all others.

The formatter names are outputted at the final summary of running this goal, e.g. `isort` and `shfmt`. You can also run `fmt --only=fake` to get a list of all activated formatters.

You can repeat this option, e.g. `fmt --only=isort --only=shfmt` or `fmt --only=['isort', 'shfmt']`.

</div> <br>

## Advanced options

<div style="color: purple"> <h3><code>batch_size</code></h3> <code>--fmt-batch-size=&lt;int&gt;</code><br> <code>PANTS_FMT_BATCH_SIZE</code><br> </div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>128</code></span>

<br>

The target number of files to be included in each formatter batch.

Formatter processes are batched for a few reasons:

  1. to avoid OS argument length limits (in processes which don't support argument files)

  2. to support more stable cache keys than would be possible if all files were operated on in a single batch.

  3. to allow for parallelism in formatter processes which don't have internal parallelism, or -- if they do support internal parallelism -- to improve scheduling behavior when multiple processes are competing for cores and so internal parallelism cannot be used perfectly.

In order to improve cache hit rates (see 2.), batches are created at stable boundaries, and so this value is only a "target" batch size (rather than an exact value).

</div> <br>

## Deprecated options

<div style="color: purple"> <h3><code>per_file_caching</code></h3> <code>--[no-]fmt-per-file-caching</code><br> <code>PANTS_FMT_PER_FILE_CACHING</code><br> </div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>False</code></span> <p style="color: darkred">Deprecated, will be removed in version: 2.11.0.dev0.<br>Formatters are now broken into multiple batches by default using the `--batch-size` argument.

To keep (roughly) this option's behavior, set [fmt].batch_size = 1. However, you'll likely get better performance by using a larger batch size because of reduced overhead launching processes.</p> <br>

Rather than formatting all files in a single batch, format each file as a separate process.

Why do this? You'll get many more cache hits. Why not do this? Formatters both have substantial startup overhead and are cheap to add one additional file to the run. On a cold cache, it is much faster to use `--no-per-file-caching`.

We only recommend using `--per-file-caching` if you are using a remote cache or if you have benchmarked that this option will be faster than `--no-per-file-caching` for your use case.

</div> <br>