DEV Community

Adam Lombard
Adam Lombard

Posted on • Edited on

VSCode: Setting line lengths in the Black Python code formatter

The docs for the Black Python code formatter say that the formatter "is not configurable". This is largely true, but if you have Black set up to work in VSCode, you can configure the line length.

In VSCode, go 'Code -> Preferences -> Settings' and search for "python formatting black args".

Add two separate arguments, in this order: --line-length and n, where "n" is your desired number of allowed characters per line:

Interface for adding Black formatting arguments in VSCode

A few notes about line lengths in Python:


If you are working on a shared project with a team, consider bypassing the VSCode settings entirely, and setting line lengths via the project's pyproject.toml:



[tool.black]
line-length = 119


Enter fullscreen mode Exit fullscreen mode

Was this helpful? Did I save you some time?

πŸ«– Buy Me A Tea! β˜•οΈ


Top comments (9)

Collapse
 
milkator profile image
milkator • Edited

I'm setting the arguments via pyproject.toml and had the problem, that the line-length was not reformatted properly.
After a while, I found out that I have to restart the format server!

If you have the same problem...simply do this:

'Ctrl + Shift + P' -> '> Black Formatter: Restart Server'

Collapse
 
rrakso profile image
rrakso

Thank you!!!

Collapse
 
perfecto25 profile image
mrx

fyi, can also add this to your .vscode folder > settings.json

{
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": ["--line-length", "120"],
    "python.linting.enabled": true
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
jordanahaines profile image
Jordan Haines • Edited

Definitely going to reference this very time I start a new project -- right after I re-learn that setting max line length in .pylintrc is not a substitute for the setting Adam's proposed here. Thanks Adam!

Collapse
 
adamlombard profile image
Adam Lombard

You're welcome, Jordan! πŸ™‚

Collapse
 
waylonwalker profile image
Waylon Walker

119 seems uncomfortable! Then again I have never done Django and might be missing some context here.

I generally stick to black defaults and change my flake8 config to match.

Collapse
 
adamlombard profile image
Adam Lombard

Yeah, 119 is a little wide. Apparently it's the max char width for GitHub code review, which is why the Django project uses it as a max line length.

Collapse
 
simkimsia profile image
simkimsia

Thank you this helps!

Collapse
 
adamlombard profile image
Adam Lombard

You're welcome!