Using YAPF with your editor

YAPF is supported by multiple editors via community extensions or plugins.

IntelliJ/PyCharm

Use the File Watchers plugin to run YAPF against a file when you perform a save.

  1. Install the File Watchers Plugin
  2. Add the following .idea/watcherTasks.xml to your project. If you already have this file just add the TaskOptions section from below. This example uses Windows and a virtual environment, modify the program option as appropriate.
    <?xml version="1.0" encoding="UTF-8"?>
    <project version="4">
        <component name="ProjectTasksOptions">
            <TaskOptions isEnabled="true">
                <option name="arguments" value="-i $FilePathRelativeToProjectRoot$" />
                <option name="checkSyntaxErrors" value="true" />
                <option name="description" />
                <option name="exitCodeBehavior" value="ERROR" />
                <option name="fileExtension" value="py" />
                <option name="immediateSync" value="true" />
                <option name="name" value="yapf" />
                <option name="output" value="" />
                <option name="outputFilters">
                    <array />
                </option>
                <option name="outputFromStdout" value="false" />
                <option name="program" value="$PROJECT_DIR$/.venv/Scripts/yapf.exe" />
                <option name="runOnExternalChanges" value="true" />
                <option name="scopeName" value="Project Files" />
                <option name="trackOnlyRoot" value="false" />
                <option name="workingDir" value="$Projectpath$" />
                <envs />
            </TaskOptions>
        </component>
    </project>
    

IPython

IPython supports formatting lines automatically when you press the <Enter> button to submit the current code block.

Make sure that the YAPF module is available to the IPython runtime:

pip install ipython yapf

pipx example:

pipx install ipython
pipx inject ipython yapf

Add following to ~/.ipython/profile_default/ipython_config.py:

c.TerminalInteractiveShell.autoformatter = 'yapf'

VSCode

VSCode has deprecated support for YAPF in its official Python extension in favor of dedicated formatter extensions.

  1. Install EeyoreLee's yapf extension.
  2. Install the yapf package from pip.
    pip install yapf
    
  3. Add the following to VSCode's settings.json:
    "[python]": {
        "editor.formatOnSaveMode": "file",
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "eeyore.yapf"  # choose this extension
    },