-### Typing stub files
-
-PEP 484 describes the syntax for type hints in Python. One of the
-use cases for typing is providing type annotations for modules which
-cannot contain them directly (they might be written in C, or they might
-be third-party, or their implementation may be overly dynamic, and so on).
-
-To solve this, [stub files with the `.pyi` file
-extension](https://www.python.org/dev/peps/pep-0484/#stub-files) can be
-used to describe typing information for an external module. Those stub
-files omit the implementation of classes and functions they
-describe, instead they only contain the structure of the file (listing
-globals, functions, and classes with their members). The recommended
-code style for those files is more terse than PEP 8:
-
-* prefer `...` on the same line as the class/function signature;
-* avoid vertical whitespace between consecutive module-level functions,
- names, or methods and fields within a single class;
-* use a single blank line between top-level class definitions, or none
- if the classes are very small.
-
-*Black* enforces the above rules. There are additional guidelines for
-formatting `.pyi` file that are not enforced yet but might be in
-a future version of the formatter:
-
-* all function bodies should be empty (contain `...` instead of the body);
-* do not use docstrings;
-* prefer `...` over `pass`;
-* for arguments with a default, use `...` instead of the actual default;
-* avoid using string literals in type annotations, stub files support
- forward references natively (like Python 3.7 code with `from __future__
- import annotations`);
-* use variable annotations instead of type comments, even for stubs that
- target older versions of Python;
-* for arguments that default to `None`, use `Optional[]` explicitly;
-* use `float` instead of `Union[int, float]`.
-
-
-## pyproject.toml
-
-*Black* is able to read project-specific default values for its
-command line options from a `pyproject.toml` file. This is
-especially useful for specifying custom `--include` and `--exclude`
-patterns for your project.
-
-**Pro-tip**: If you're asking yourself "Do I need to configure anything?"
-the answer is "No". *Black* is all about sensible defaults.
-
-
-### What on Earth is a `pyproject.toml` file?
-
-[PEP 518](https://www.python.org/dev/peps/pep-0518/) defines
-`pyproject.toml` as a configuration file to store build system
-requirements for Python projects. With the help of tools
-like [Poetry](https://poetry.eustace.io/) or
-[Flit](https://flit.readthedocs.io/en/latest/) it can fully replace the
-need for `setup.py` and `setup.cfg` files.
-
-
-### Where *Black* looks for the file
-
-By default *Black* looks for `pyproject.toml` starting from the common
-base directory of all files and directories passed on the command line.
-If it's not there, it looks in parent directories. It stops looking
-when it finds the file, or a `.git` directory, or a `.hg` directory,
-or the root of the file system, whichever comes first.
-
-If you're formatting standard input, *Black* will look for configuration
-starting from the current working directory.
-
-You can also explicitly specify the path to a particular file that you
-want with `--config`. In this situation *Black* will not look for any
-other file.
-
-If you're running with `--verbose`, you will see a blue message if
-a file was found and used.
-
-
-### Configuration format
-
-As the file extension suggests, `pyproject.toml` is a [TOML](https://github.com/toml-lang/toml) file. It contains separate
-sections for different tools. *Black* is using the `[tool.black]`
-section. The option keys are the same as long names of options on
-the command line.
-
-Note that you have to use single-quoted strings in TOML for regular
-expressions. It's the equivalent of r-strings in Python. Multiline
-strings are treated as verbose regular expressions by Black. Use `[ ]`
-to denote a significant space character.
-
-<details>
-<summary>Example `pyproject.toml`</summary>
-
-```toml
-[tool.black]
-line-length = 88
-py36 = true
-include = '\.pyi?$'
-exclude = '''
-/(
- \.git
- | \.hg
- | \.mypy_cache
- | \.tox
- | \.venv
- | _build
- | buck-out
- | build
- | dist
-
- # The following are specific to Black, you probably don't want those.
- | blib2to3
- | tests/data
-)/
-'''
-```
-
-</details>
-
-### Lookup hierarchy
-
-Command-line options have defaults that you can see in `--help`.
-A `pyproject.toml` can override those defaults. Finally, options
-provided by the user on the command line override both.
-
-*Black* will only ever use one `pyproject.toml` file during an entire
-run. It doesn't look for multiple files, and doesn't compose
-configuration from different levels of the file hierarchy.
-
-
-## Editor integration
-
-### Emacs
-
-Use [proofit404/blacken](https://github.com/proofit404/blacken).
-
-
-### PyCharm
-
-1. Install `black`.
-
-```console
-$ pip install black
-```
-
-2. Locate your `black` installation folder.
-
- On macOS / Linux / BSD:
-
-```console
-$ which black
-/usr/local/bin/black # possible location
-```
-
- On Windows:
-
-```console
-$ where black
-%LocalAppData%\Programs\Python\Python36-32\Scripts\black.exe # possible location
-```
-
-3. Open External tools in PyCharm with `File -> Settings -> Tools -> External Tools`.
-
-4. Click the + icon to add a new external tool with the following values:
- - Name: Black
- - Description: Black is the uncompromising Python code formatter.
- - Program: <install_location_from_step_2>
- - Arguments: $FilePath$
-
-5. Format the currently opened file by selecting `Tools -> External Tools -> black`.
- - Alternatively, you can set a keyboard shortcut by navigating to `Preferences -> Keymap -> External Tools -> External Tools - Black`.
-
-
-### Vim
-
-Commands and shortcuts:
-
-* `,=` or `:Black` to format the entire file (ranges not supported);
-* `:BlackUpgrade` to upgrade *Black* inside the virtualenv;
-* `:BlackVersion` to get the current version of *Black* inside the
- virtualenv.
-
-Configuration:
-* `g:black_fast` (defaults to `0`)
-* `g:black_linelength` (defaults to `88`)
-* `g:black_skip_string_normalization` (defaults to `0`)
-* `g:black_virtualenv` (defaults to `~/.vim/black`)
-
-To install with [vim-plug](https://github.com/junegunn/vim-plug):
-
-```
-Plug 'ambv/black',
-```
-
-or with [Vundle](https://github.com/VundleVim/Vundle.vim):
-
-```
-Plugin 'ambv/black'
-```
-
-or you can copy the plugin from [plugin/black.vim](https://github.com/ambv/black/tree/master/plugin/black.vim).
-Let me know if this requires any changes to work with Vim 8's builtin
-`packadd`, or Pathogen, and so on.
-
-This plugin **requires Vim 7.0+ built with Python 3.6+ support**. It
-needs Python 3.6 to be able to run *Black* inside the Vim process which
-is much faster than calling an external command.
-
-On first run, the plugin creates its own virtualenv using the right
-Python version and automatically installs *Black*. You can upgrade it later
-by calling `:BlackUpgrade` and restarting Vim.
-
-If you need to do anything special to make your virtualenv work and
-install *Black* (for example you want to run a version from master),
-create a virtualenv manually and point `g:black_virtualenv` to it.
-The plugin will use it.
-
-To run *Black* on save, add the following line to `.vimrc` or `init.vim`:
-
-```
-autocmd BufWritePost *.py execute ':Black'
-```
-
-**How to get Vim with Python 3.6?**
-On Ubuntu 17.10 Vim comes with Python 3.6 by default.
-On macOS with Homebrew run: `brew install vim --with-python3`.
-When building Vim from source, use:
-`./configure --enable-python3interp=yes`. There's many guides online how
-to do this.
-
-
-### Visual Studio Code
-
-Use the [Python extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python)
-([instructions](https://code.visualstudio.com/docs/python/editing#_formatting))
-or [joslarson.black-vscode](https://marketplace.visualstudio.com/items?itemName=joslarson.black-vscode).
-
-
-### SublimeText 3
-
-Use [sublack plugin](https://github.com/jgirardet/sublack).
-
-
-### IPython Notebook Magic
-
-Use [blackcellmagic](https://github.com/csurfer/blackcellmagic).
-
-
-### Other editors
-
-Atom/Nuclide integration is planned by the author, others will
-require external contributions.
-
-Patches welcome! ✨ 🍰 ✨
-
-Any tool that can pipe code through *Black* using its stdio mode (just
-[use `-` as the file name](https://www.tldp.org/LDP/abs/html/special-chars.html#DASHREF2)).
-The formatted code will be returned on stdout (unless `--check` was
-passed). *Black* will still emit messages on stderr but that shouldn't
-affect your use case.
-
-This can be used for example with PyCharm's [File Watchers](https://www.jetbrains.com/help/pycharm/file-watchers.html).
-
-
-## Version control integration
-
-Use [pre-commit](https://pre-commit.com/). Once you [have it
-installed](https://pre-commit.com/#install), add this to the
-`.pre-commit-config.yaml` in your repository:
-```yaml
-repos:
-- repo: https://github.com/ambv/black
- rev: stable
- hooks:
- - id: black
- language_version: python3.6
-```
-Then run `pre-commit install` and you're ready to go.
-
-Avoid using `args` in the hook. Instead, store necessary configuration
-in `pyproject.toml` so that editors and command-line usage of Black all
-behave consistently for your project. See *Black*'s own `pyproject.toml`
-for an example.
-
-If you're already using Python 3.7, switch the `language_version`
-accordingly. Finally, `stable` is a tag that is pinned to the latest
-release on PyPI. If you'd rather run on master, this is also an option.
-
-
-## Ignoring unmodified files
-
-*Black* remembers files it has already formatted, unless the `--diff` flag is used or
-code is passed via standard input. This information is stored per-user. The exact
-location of the file depends on the *Black* version and the system on which *Black*
-is run. The file is non-portable. The standard location on common operating systems
-is:
-
-* Windows: `C:\\Users\<username>\AppData\Local\black\black\Cache\<version>\cache.<line-length>.pickle`
-* macOS: `/Users/<username>/Library/Caches/black/<version>/cache.<line-length>.pickle`
-* Linux: `/home/<username>/.cache/black/<version>/cache.<line-length>.pickle`