X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/c3589afa3d7d7c1030c1dd1a500fa7efadebd511..c0a7582e3d4cc8bec3b7f5a6c52b36880dcb57d7:/README.md diff --git a/README.md b/README.md index 45cd8f6..3b5e607 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,11 @@ Try it out now using the [Black Playground](https://black.now.sh). Watch the --- _Contents:_ **[Installation and usage](#installation-and-usage)** | -**[Code style](#the-black-code-style)** | **[pyproject.toml](#pyprojecttoml)** | -**[Editor integration](#editor-integration)** | **[blackd](#blackd)** | -**[Version control integration](#version-control-integration)** | -**[Ignoring unmodified files](#ignoring-unmodified-files)** | **[Used by](#used-by)** | -**[Testimonials](#testimonials)** | **[Show your style](#show-your-style)** | +**[Code style](#the-black-code-style)** | **[Pragmatism](#pragmatism)** | +**[pyproject.toml](#pyprojecttoml)** | **[Editor integration](#editor-integration)** | +**[blackd](#blackd)** | **[Version control integration](#version-control-integration)** +| **[Ignoring unmodified files](#ignoring-unmodified-files)** | **[Used by](#used-by)** +| **[Testimonials](#testimonials)** | **[Show your style](#show-your-style)** | **[Contributing](#contributing-to-black)** | **[Change Log](#change-log)** | **[Authors](#authors)** @@ -489,6 +489,47 @@ file that are not enforced yet but might be in a future version of the formatter - for arguments that default to `None`, use `Optional[]` explicitly; - use `float` instead of `Union[int, float]`. +## Pragmatism + +Early versions of _Black_ used to be absolutist in some respects. They took after its +initial author. This was fine at the time as it made the implementation simpler and +there were not many users anyway. Not many edge cases were reported. As a mature tool, +_Black_ does make some exceptions to rules it otherwise holds. This section documents +what those exceptions are and why this is the case. + +### The magic trailing comma + +_Black_ in general does not take existing formatting into account. + +However, there are cases where you put a short collection or function call in your code +but you anticipate it will grow in the future. + +For example: + +```py3 +TRANSLATIONS = { + "en_us": "English (US)", + "pl_pl": "polski", +} +``` + +Early versions of _Black_ used to ruthlessly collapse those into one line (it fits!). +Now, you can communicate that you don't want that by putting a trailing comma in the +collection yourself. When you do, _Black_ will know to always explode your collection +into one item per line. + +How do you make it stop? Just delete that trailing comma and _Black_ will collapse your +collection into one line if it fits. + +### r"strings" and R"strings" + +_Black_ normalizes string quotes as well as string prefixes, making them lowercase. One +exception to this rule is r-strings. It turns out that the very popular +[MagicPython](https://github.com/MagicStack/MagicPython/) syntax highlighter, used by +default by (among others) GitHub and Visual Studio Code, differentiates between +r-strings and R-strings. The former are syntax highlighted as regular expressions while +the latter are treated as true raw strings with no special semantics. + ## pyproject.toml _Black_ is able to read project-specific default values for its command line options @@ -697,7 +738,7 @@ Configuration: To install with [vim-plug](https://github.com/junegunn/vim-plug): ``` -Plug 'psf/black' +Plug 'psf/black', { 'branch': 'stable' } ``` or with [Vundle](https://github.com/VundleVim/Vundle.vim): @@ -706,8 +747,15 @@ or with [Vundle](https://github.com/VundleVim/Vundle.vim): Plugin 'psf/black' ``` +and execute the following in a terminal: + +```console +$ cd ~/.vim/bundle/black +$ git checkout origin/stable -b stable +``` + or you can copy the plugin from -[plugin/black.vim](https://github.com/psf/black/tree/master/plugin/black.vim). +[plugin/black.vim](https://github.com/psf/black/blob/stable/plugin/black.vim). ``` mkdir -p ~/.vim/pack/python/start/black/plugin @@ -937,6 +985,8 @@ code style: pytest, tox, Pyramid, Django Channels, Hypothesis, attrs, SQLAlchemy Poetry, PyPA applications (Warehouse, Pipenv, virtualenv), pandas, Pillow, every Datadog Agent Integration, Home Assistant. +The following organizations use _Black_: Dropbox. + Are we missing anyone? Let us know. ## Testimonials @@ -1015,7 +1065,7 @@ Maintained with [Carol Willing](mailto:carolcode@willingconsulting.com), Multiple contributions by: -- [Abdur-Rahmaan Janhangeer](mailto:cryptolabour@gmail.com) +- [Abdur-Rahmaan Janhangeer](mailto:arj.python@gmail.com) - [Adam Johnson](mailto:me@adamj.eu) - [Alexander Huynh](mailto:github@grande.coffee) - [Andrew Thorp](mailto:andrew.thorp.dev@gmail.com)