X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/c6c8ef76a4d991cd8a7a3b00a816b6db72ecdf04..a1fd7b26e75ab6e98fbb46770f9597bdf0958c51:/README.md diff --git a/README.md b/README.md index bc684ec..7f9b1d0 100644 --- a/README.md +++ b/README.md @@ -71,44 +71,57 @@ black {source_file_or_directory} black [OPTIONS] [SRC]... Options: - -l, --line-length INTEGER Where to wrap around. [default: 88] - --py36 Allow using Python 3.6-only syntax on all input - files. This will put trailing commas in function - signatures and calls also after *args and - **kwargs. [default: per-file auto-detection] - --pyi Format all input files like typing stubs - regardless of file extension (useful when piping - source on standard input). + -l, --line-length INTEGER How many characters per line to allow. + [default: 88] + -t, --target-version [pypy35|cpy27|cpy33|cpy34|cpy35|cpy36|cpy37|cpy38] + Python versions that should be supported by + Black's output. [default: per-file auto- + detection] + --py36 Allow using Python 3.6-only syntax on all + input files. This will put trailing commas + in function signatures and calls also after + *args and **kwargs. [default: per-file + auto-detection] + --pyi Format all input files like typing stubs + regardless of file extension (useful when + piping source on standard input). -S, --skip-string-normalization - Don't normalize string quotes or prefixes. - --check Don't write the files back, just return the - status. Return code 0 means nothing would - change. Return code 1 means some files would be - reformatted. Return code 123 means there was an - internal error. - --diff Don't write the files back, just output a diff - for each file on stdout. - --fast / --safe If --fast given, skip temporary sanity checks. - [default: --safe] - --include TEXT A regular expression that matches files and - directories that should be included on - recursive searches. On Windows, use forward - slashes for directories. [default: \.pyi?$] - --exclude TEXT A regular expression that matches files and - directories that should be excluded on - recursive searches. On Windows, use forward - slashes for directories. [default: - build/|buck-out/|dist/|_build/|\.git/|\.hg/| - \.mypy_cache/|\.nox/|\.tox/|\.venv/] - -q, --quiet Don't emit non-error messages to stderr. Errors - are still emitted, silence those with - 2>/dev/null. - -v, --verbose Also emit messages to stderr about files - that were not changed or were ignored due to - --exclude=. - --version Show the version and exit. - --config PATH Read configuration from PATH. - --help Show this message and exit. + Don't normalize string quotes or prefixes. + --check Don't write the files back, just return the + status. Return code 0 means nothing would + change. Return code 1 means some files + would be reformatted. Return code 123 means + there was an internal error. + --diff Don't write the files back, just output a + diff for each file on stdout. + --fast / --safe If --fast given, skip temporary sanity + checks. [default: --safe] + --include TEXT A regular expression that matches files and + directories that should be included on + recursive searches. An empty value means + all files are included regardless of the + name. Use forward slashes for directories + on all platforms (Windows, too). Exclusions + are calculated first, inclusions later. + [default: \.pyi?$] + --exclude TEXT A regular expression that matches files and + directories that should be excluded on + recursive searches. An empty value means no + paths are excluded. Use forward slashes for + directories on all platforms (Windows, too). + Exclusions are calculated first, inclusions + later. [default: /(\.eggs|\.git|\.hg|\.mypy + _cache|\.nox|\.tox|\.venv|_build|buck- + out|build|dist)/] + -q, --quiet Don't emit non-error messages to stderr. + Errors are still emitted, silence those with + 2>/dev/null. + -v, --verbose Also emit messages to stderr about files + that were not changed or were ignored due to + --exclude=. + --version Show the version and exit. + --config PATH Read configuration from PATH. + -h, --help Show this message and exit. ``` *Black* is a well-behaved Unix-style command-line tool: @@ -141,7 +154,8 @@ original. This slows it down. If you're feeling confident, use *Black* reformats entire files in place. It is not configurable. It doesn't take previous formatting into account. It doesn't reformat -blocks that start with `# fmt: off` and end with `# fmt: on`. It also +blocks that start with `# fmt: off` and end with `# fmt: on`. `# fmt: on/off` +have to be on the same level of indentation. It also recognizes [YAPF](https://github.com/google/yapf)'s block comments to the same effect, as a courtesy for straddling code. @@ -235,13 +249,13 @@ the following configuration. multi_line_output=3 include_trailing_comma=True force_grid_wrap=0 -combine_as_imports=True +use_parentheses=True line_length=88 ``` The equivalent command line is: ``` -$ isort --multi-line=3 --trailing-comma --force-grid-wrap=0 --combine-as --line-width=88 [ file.py ] +$ isort --multi-line=3 --trailing-comma --force-grid-wrap=0 --use-parentheses --line-width=88 [ file.py ] ``` @@ -277,7 +291,8 @@ ignore = E501 ``` You'll find *Black*'s own .flake8 config file is configured like this. -If you're curious about the reasoning behind B950, Bugbear's documentation +If you're curious about the reasoning behind B950, +[Bugbear's documentation](https://github.com/PyCQA/flake8-bugbear#opinionated-warnings) explains it. The tl;dr is "it's like highway speed limits, we won't bother you if you overdo it by a few km/h". @@ -355,8 +370,8 @@ string literals that ended up on the same line (see [#26](https://github.com/ambv/black/issues/26) for details). Why settle on double quotes? They anticipate apostrophes in English -text. They match the docstring standard described in PEP 257. An -empty string in double quotes (`""`) is impossible to confuse with +text. They match the docstring standard described in [PEP 257](https://www.python.org/dev/peps/pep-0257/#what-is-a-docstring). +An empty string in double quotes (`""`) is impossible to confuse with a one double-quote regardless of fonts and syntax highlighting used. On top of this, double quotes for strings are consistent with C which Python interacts a lot with. @@ -377,14 +392,8 @@ an adoption helper, avoid using this for new projects. *Black* standardizes most numeric literals to use lowercase letters for the syntactic parts and uppercase letters for the digits themselves: `0xAB` instead of `0XAB` and `1e10` instead of `1E10`. Python 2 long literals are -styled as `2L` instead of `2l` to avoid confusion between `l` and `1`. In -Python 3.6+, *Black* adds underscores to long numeric literals to aid -readability: `100000000` becomes `100_000_000`. +styled as `2L` instead of `2l` to avoid confusion between `l` and `1`. -For regions where numerals are grouped differently (like [India](https://en.wikipedia.org/wiki/Indian_numbering_system) -and [China](https://en.wikipedia.org/wiki/Chinese_numerals#Whole_numbers)), -the `-N` or `--skip-numeric-underscore-normalization` command line option -makes *Black* preserve underscores in numeric literals. ### Line breaks & binary operators @@ -544,7 +553,7 @@ other file. If you're running with `--verbose`, you will see a blue message if a file was found and used. -Please note `blackd` will not use `pyproject.toml` configuration. +Please note `blackd` will not use `pyproject.toml` configuration. ### Configuration format @@ -568,21 +577,23 @@ 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 -)/ + +( + /( + \.eggs # exclude a few common directories in the + | \.git # root of the project + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist + )/ + | foo.py # also separately exclude a file named foo.py in + # the root of the project +) ''' ``` @@ -652,6 +663,7 @@ $ where black - Arguments: `$FilePath$` - Output paths to refresh: `$FilePathRelativeToProjectRoot$` - Working directory: `$ProjectFileDir$` + - Uncheck "Auto-save edited files to trigger the watcher" ### Vim @@ -671,7 +683,7 @@ Configuration: To install with [vim-plug](https://github.com/junegunn/vim-plug): ``` -Plug 'ambv/black', +Plug 'ambv/black' ``` or with [Vundle](https://github.com/VundleVim/Vundle.vim): @@ -722,7 +734,7 @@ Use the [Python extension](https://marketplace.visualstudio.com/items?itemName=m Use [sublack plugin](https://github.com/jgirardet/sublack). -### IPython Notebook Magic +### Jupyter Notebook Magic Use [blackcellmagic](https://github.com/csurfer/blackcellmagic). @@ -788,14 +800,14 @@ Options: ### Protocol `blackd` only accepts `POST` requests at the `/` path. The body of the request -should contain the python source code to be formatted, encoded +should contain the python source code to be formatted, encoded according to the `charset` field in the `Content-Type` request header. If no `charset` is specified, `blackd` assumes `UTF-8`. There are a few HTTP headers that control how the source is formatted. These correspond to command line flags for *Black*. There is one exception to this: `X-Protocol-Version` which if present, should have the value `1`, otherwise the -request is rejected with `HTTP 501` (Not Implemented). +request is rejected with `HTTP 501` (Not Implemented). The headers controlling how code is formatted are: @@ -803,14 +815,13 @@ The headers controlling how code is formatted are: - `X-Skip-String-Normalization`: corresponds to the `--skip-string-normalization` command line flag. If present and its value is not the empty string, no string normalization will be performed. - - `X-Skip-Numeric-Underscore-Normalization`: corresponds to the - `--skip-numeric-underscore-normalization` command line flag. - `X-Fast-Or-Safe`: if set to `fast`, `blackd` will act as *Black* does when passed the `--fast` command line flag. - `X-Python-Variant`: if set to `pyi`, `blackd` will act as *Black* does when passed the `--pyi` command line flag. Otherwise, its value must correspond to - a Python version. If this value represents at least Python 3.6, `blackd` will - act as *Black* does when passed the `--py36` command line flag. + a Python version or a set of comma-separated Python versions, optionally + prefixed with `cpy` or `pypy`. For example, to request code that is compatible + with PyPy 3.5 and CPython 3.5, set the header to `pypy3.5,cpy3.5`. If any of these headers are set to invalid values, `blackd` returns a `HTTP 400` error response, mentioning the name of the problematic header in the message body. @@ -929,6 +940,13 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). ## Change Log +### 19.2b0 + +* *Black* no longer normalizes numeric literals to include `_` separators. + +* new option `--target-version` to control which Python versions + *Black*-formatted code should target + ### 18.9b0 * numeric literals are now formatted by *Black* (#452, #461, #464, #469): @@ -953,6 +971,8 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). * cache is now populated when `--check` is successful for a file which speeds up consecutive checks of properly formatted unmodified files (#448) +* whitespace at the beginning of the file is now removed (#399) + * fixed mangling [pweave](http://mpastell.com/pweave/) and [Spyder IDE](https://pythonhosted.org/spyder/) special comments (#532) @@ -1339,9 +1359,10 @@ Multiple contributions by: * [Luka Sterbic](mailto:luka.sterbic@gmail.com) * [Miguel Gaiowski](mailto:miggaiowski@gmail.com) * [Miroslav Shubernetskiy](mailto:miroslav@miki725.com) -* [Neraste](neraste.herr10@gmail.com) +* [Neraste](mailto:neraste.herr10@gmail.com) * [Osaetin Daniel](mailto:osaetindaniel@gmail.com) * [Peter Bengtsson](mailto:mail@peterbe.com) * [Stavros Korokithakis](mailto:hi@stavros.io) * [Sunil Kapil](mailto:snlkapil@gmail.com) * [Vishwas B Sharma](mailto:sharma.vishwas88@gmail.com) +* [Chuck Wooters](mailto:chuck.wooters@microsoft.com)