8

I use black for format normal .py files as well as Jupyter Notebook files (.ipynb). For notebooks, I want a shorter line-length.

Is it possible to specify different formatting rules for different file extensions with black?

martineau
  • 119,623
  • 25
  • 170
  • 301
william_grisaitis
  • 5,170
  • 3
  • 33
  • 40

1 Answers1

11

You could create two separate files for .py and .ipynb files and run them separately

Some usefull flags from docs:

--config FILE Read configuration from FILE path.

--include TEXT A regular expression that matches files and directories that should be included on recursive searches.

So, to format multiple types of files, run something like:

python -m black --config pyproject.py.toml --include '*.py' src
python -m black --config pyproject.ipynb.toml --include '*.ipynb' src

Also you could specify include field inside toml files. It's in docs too:

[tool.black]
line-length = 88
target-version = ['py37']
include = '\.pyi?$'
Alex Kosh
  • 2,206
  • 2
  • 19
  • 18
  • Is it possible to specify an equivalent to both of those `python -m black --config` lines in a single toml file somehow? I understand these commands point to two different files, but it would be great if black could conditionally apply formatting rules based on the file extension (.py or .ipynb) without needing to change the command. Also, I should mention that I'm using the vscode Black extension, so I can apply formatting to a .py file or .ipynb cell with a keybinding. – Marktodisco Aug 09 '23 at 13:15