X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/4a7da71069b4e3a8f7a16ae4e22507fa9eb39f34..b073c9a4e956f0e350394b7b164cac25801256d7:/README.md diff --git a/README.md b/README.md index add9285..dc93b37 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ content instead. possible. Try it out now using the [Black Playground](https://black.now.sh). +Watch the [PyCon 2019 talk](https://youtu.be/esZLCuWs_2Y) to learn more. --- @@ -38,6 +39,7 @@ Try it out now using the [Black Playground](https://black.now.sh). **[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)** | @@ -71,6 +73,7 @@ black {source_file_or_directory} black [OPTIONS] [SRC]... Options: + -c, --code TEXT Format the code passed in as a string. -l, --line-length INTEGER How many characters per line to allow. [default: 88] -t, --target-version [py27|py33|py34|py35|py36|py37|py38] @@ -136,7 +139,7 @@ Options: ### NOTE: This is a beta product -*Black* is already successfully used by several projects, small and big. +*Black* is already [successfully used](#used-by) by many projects, small and big. It also sports a decent test suite. However, it is still very new. Things will probably be wonky for a while. This is made explicit by the "Beta" trove classifier, as well as by the "b" in the version number. @@ -290,7 +293,7 @@ you are probably already using. You'd do it like this: max-line-length = 80 ... select = C,E,F,W,B,B950 -ignore = E501 +ignore = E501,W503,E203 ``` You'll find *Black*'s own .flake8 config file is configured like this. @@ -617,7 +620,8 @@ configuration from different levels of the file hierarchy. ### Emacs -Use [proofit404/blacken](https://github.com/proofit404/blacken). +Use [proofit404/blacken](https://github.com/proofit404/blacken) or +[Elpy](https://github.com/jorgenschaefer/elpy). ### PyCharm/IntelliJ IDEA @@ -647,11 +651,11 @@ $ where black 3. Open External tools in PyCharm/IntelliJ IDEA On macOS: - + ```PyCharm -> Preferences -> Tools -> External Tools``` On Windows / Linux / BSD: - + ```File -> Settings -> Tools -> External Tools``` 4. Click the + icon to add a new external tool with the following values: @@ -663,7 +667,7 @@ $ where black 5. Format the currently opened file by selecting `Tools -> External Tools -> black`. - Alternatively, you can set a keyboard shortcut by navigating to `Preferences or Settings -> Keymap -> External Tools -> External Tools - Black`. -6. Optionally, run Black on every file save: +6. Optionally, run *Black* on every file save: 1. Make sure you have the [File Watcher](https://plugins.jetbrains.com/plugin/7177-file-watchers) plugin installed. 2. Go to `Preferences or Settings -> Tools -> File Watchers` and click `+` to add a new watcher: @@ -676,6 +680,38 @@ $ where black - Working directory: `$ProjectFileDir$` - Uncheck "Auto-save edited files to trigger the watcher" + + +### Wing IDE + +Wing supports black via the OS Commands tool, as explained in the Wing documentation on [pep8 formatting](https://wingware.com/doc/edit/pep8). The detailed procedure is: + +1. Install `black`. + +```console +$ pip install black +``` + +2. Make sure it runs from the command line, e.g. + +```console +$ black --help +``` + +3. In Wing IDE, activate the **OS Commands** panel and define the command **black** to execute black on the currently selected file: + +- Use the Tools -> OS Commands menu selection +- click on **+** in **OS Commands** -> New: Command line.. + - Title: black + - Command Line: black %s + - I/O Encoding: Use Default + - Key Binding: F1 + - [x] Raise OS Commands when executed + - [x] Auto-save files before execution + - [x] Line mode + +4. Select a file in the editor and press **F1** , or whatever key binding you selected in step 3, to reformat the file. + ### Vim Commands and shortcuts: @@ -808,6 +844,14 @@ Options: -h, --help Show this message and exit. ``` +There is no official blackd client tool (yet!). You can test that blackd is +working using `curl`: + +``` +blackd --bind-port 9090 & # or let blackd choose a port +curl -s -XPOST "localhost:9090" -d "print('valid')" +``` + ### Protocol `blackd` only accepts `POST` requests at the `/` path. The body of the request @@ -866,7 +910,7 @@ 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` +behave consistently for your project. See *Black*'s own [pyproject.toml](/pyproject.toml) for an example. If you're already using Python 3.7, switch the `language_version` @@ -889,6 +933,20 @@ is: `file-mode` is an int flag that determines whether the file was formatted as 3.6+ only, as .pyi, and whether string normalization was omitted. +To override the location of these files on macOS or Linux, set the environment variable +`XDG_CACHE_HOME` to your preferred location. For example, if you want to put the cache in +the directory you're running *Black* from, set `XDG_CACHE_HOME=.cache`. *Black* will then +write the above files to `.cache/black//`. + +## Used by + +The following notable open-source projects trust *Black* with enforcing +a consistent code style: pytest, tox, Pyramid, Django Channels, Hypothesis, +attrs, SQLAlchemy, Poetry, PyPA applications (Warehouse, Pipenv, virtualenv), +every Datadog Agent Integration. + +Are we missing anyone? Let us know. + ## Testimonials @@ -951,22 +1009,42 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). ## Change Log -### 19.5b0 +### unreleased -* remove unnecessary parentheses around `yield` expressions (#834) +* added `black -c` as a way to format code passed from the command line + (#761) -* add parentheses around long tuples in unpacking assignments (#832) +* --safe now works with Python 2 code (#840) -* don't produce invalid code for `from` ... `import` blocks with comments +* fixed grammar selection for Python 2-specific code (#765) + +* fixed feature detection for trailing commas in function definitions + and call sites (#763) + +* *Black* can now format async generators (#593) + +* *Black* no longer crashes on Windows machines with more than 61 cores + (#838) + +* *Black* no longer crashes on standalone comments prepended with + a backslash (#767) + +* *Black* no longer crashes on `from` ... `import` blocks with comments (#829) -* fix grammar selection (#765) +* removed unnecessary parentheses around `yield` expressions (#834) -* fix feature detection for trailing commas in function definitions and - call sites (#763) +* added parentheses around long tuples in unpacking assignments (#832) + +* fixed bug that led *Black* format some code with a line length target + of 1 (#762) + +* *Black* no longer introduces quotes in f-string subexpressions on string + boundaries (#863) + +* if *Black* puts parenthesis around a single expression, it moves comments + to the wrapped expression instead of after the brackets (#872) -* fix bug that led *Black* format some code with a line length target of 1 - (#762) ### 19.3b0 @@ -994,6 +1072,7 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md). * `blackd` now supports CORS (#622) + ### 18.9b0 * numeric literals are now formatted by *Black* (#452, #461, #464, #469): @@ -1397,12 +1476,14 @@ Maintained with [Carol Willing](mailto:carolcode@willingconsulting.com), Multiple contributions by: * [Anthony Sottile](mailto:asottile@umich.edu) * [Artem Malyshev](mailto:proofit404@gmail.com) +* [Benjamin Woodruff](mailto:github@benjam.info) * [Christian Heimes](mailto:christian@python.org) * [Daniel M. Capella](mailto:polycitizen@gmail.com) * [Eli Treuherz](mailto:eli@treuherz.com) * hauntsaninja * Hugo van Kemenade * [Ivan Katanić](mailto:ivan.katanic@gmail.com) +* [Jason Fried](mailto:me@jasonfried.info) * [Jonas Obrist](mailto:ojiidotch@gmail.com) * [Luka Sterbic](mailto:luka.sterbic@gmail.com) * [Miguel Gaiowski](mailto:miggaiowski@gmail.com)