X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/9db8d4b2d79f2acc2d8f793e442bc53d947c231f..21ab37a5d92c866a289320cba7c4689df70b3342:/README.md?ds=inline diff --git a/README.md b/README.md index 244f60d..8df2f9e 100644 --- a/README.md +++ b/README.md @@ -71,44 +71,52 @@ 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] + --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/|\.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 +149,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. @@ -175,12 +184,12 @@ brackets and put that in a separate indented line. ```py3 # in: -TracebackException.from_exception(exc, limit, lookup_lines, capture_locals) +ImportantClass.important_method(exc, limit, lookup_lines, capture_locals, extra_argument) # out: -TracebackException.from_exception( - exc, limit, lookup_lines, capture_locals +ImportantClass.important_method( + exc, limit, lookup_lines, capture_locals, extra_argument ) ``` @@ -194,7 +203,7 @@ separate lines. ```py3 # in: -def very_important_function(template: str, *variables, file: os.PathLike, debug: bool = False): +def very_important_function(template: str, *variables, file: os.PathLike, engine: str, header: bool = True, debug: bool = False): """Applies `variables` to the `template` and writes to `file`.""" with open(file, 'w') as f: ... @@ -205,6 +214,8 @@ def very_important_function( template: str, *variables, file: os.PathLike, + engine: str, + header: bool = True, debug: bool = False, ): """Applies `variables` to the `template` and writes to `file`.""" @@ -235,13 +246,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 +288,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 +367,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. @@ -374,11 +386,11 @@ an adoption helper, avoid using this for new projects. ### Numeric literals -*Black* standardizes most numeric literals to use lowercase letters: `0xab` +*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`. + ### Line breaks & binary operators @@ -538,6 +550,8 @@ 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. + ### Configuration format @@ -557,24 +571,26 @@ to denote a significant space character. ```toml [tool.black] line-length = 88 -py36 = true +target_version = ['cpy37'] 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 +) ''' ``` @@ -644,6 +660,7 @@ $ where black - Arguments: `$FilePath$` - Output paths to refresh: `$FilePathRelativeToProjectRoot$` - Working directory: `$ProjectFileDir$` + - Uncheck "Auto-save edited files to trigger the watcher" ### Vim @@ -663,7 +680,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): @@ -714,7 +731,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). @@ -780,14 +797,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: @@ -799,8 +816,9 @@ The headers controlling how code is formatted are: 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. @@ -919,24 +937,45 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). ## Change Log +### 19.2b0 + +* removed `--py36` (use `--target-version=cpy36` instead) (#724) + +* long `del` statements are now split into multiple lines (#698) + +* *Black* no longer normalizes numeric literals to include `_` separators (#696) + +* new option `--target-version` to control which Python versions + *Black*-formatted code should target (#618) + ### 18.9b0 * numeric literals are now formatted by *Black* (#452, #461, #464, #469): * numeric literals are normalized to include `_` separators on Python 3.6+ code + * added `--skip-numeric-underscore-normalization` to disable the above behavior and + leave numeric underscores as they were in the input + * code with `_` in numeric literals is recognized as Python 3.6+ - * most letters in numeric literals are lowercased (e.g., in `1e10` or `0xab`) + * most letters in numeric literals are lowercased (e.g., in `1e10`, `0x01`) + + * hexadecimal digits are always uppercased (e.g. `0xBADC0DE`) * added `blackd`, see [its documentation](#blackd) for more info (#349) * adjacent string literals are now correctly split into multiple lines (#463) +* trailing comma is now added to single imports that don't fit on a line (#250) + * cache is now populated when `--check` is successful for a file which speeds up consecutive checks of properly formatted unmodified files (#448) -* code with `_` in numeric literals is recognized as Python 3.6+ (#461) +* 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) * fixed unstable formatting when unpacking big tuples (#267) @@ -953,7 +992,6 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). to be a bad idea (#415) - ### 18.6b4 * hotfix: don't freeze when multiple comments directly precede `# fmt: off` (#371) @@ -1322,9 +1360,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)