]> git.madduck.net Git - etc/vim.git/log

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

etc/vim.git
2 years agoFix arithmetic stability issue (#2817)
Shantanu [Sat, 29 Jan 2022 00:57:05 +0000 (16:57 -0800)]
Fix arithmetic stability issue (#2817)

It turns out "simple_stmt" isn't that simple: it can contain multiple
statements separated by semicolons. Invisible parenthesis logic for
arithmetic expressions only looked at the first child of simple_stmt.
This causes instability in the presence of semicolons, since the next
run through the statement following the semicolon will be the first
child of another simple_stmt.

I believe this along with #2572 fix the known stability issues.

2 years agoFormalise style preference description (#2818)
Felix Hildén [Sat, 29 Jan 2022 00:49:43 +0000 (02:49 +0200)]
Formalise style preference description (#2818)

Closes #1256: I reworded our style docs to be more explicit about the style we're aiming for and how it is changed (or isn't).

2 years agotorture test (#2815)
Jelle Zijlstra [Sat, 29 Jan 2022 00:48:38 +0000 (16:48 -0800)]
torture test (#2815)

Fixes #2651. Fixes #2754. Fixes #2518. Fixes #2321.

This adds a test that lists a number of cases of unstable formatting
that we have seen in the issue tracker. Checking it in will ensure
that we don't regress on these cases.

2 years agoTreat blank lines in stubs the same inside top-level `if` statements (#2820)
Shantanu [Sat, 29 Jan 2022 00:29:07 +0000 (16:29 -0800)]
Treat blank lines in stubs the same inside top-level `if` statements (#2820)

2 years agoElaborate on Python support policy (#2819)
Felix Hildén [Fri, 28 Jan 2022 18:58:17 +0000 (20:58 +0200)]
Elaborate on Python support policy (#2819)

2 years agoreorganize release notes for 22.1.0 (#2790)
Jelle Zijlstra [Fri, 28 Jan 2022 14:25:24 +0000 (06:25 -0800)]
reorganize release notes for 22.1.0 (#2790)

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoTests for unicode identifiers (#2816)
Shantanu [Fri, 28 Jan 2022 08:16:25 +0000 (00:16 -0800)]
Tests for unicode identifiers (#2816)

2 years agoUse parentheses on method access on float and int literals (#2799)
Shivansh-007 [Fri, 28 Jan 2022 05:31:50 +0000 (11:01 +0530)]
Use parentheses on method access on float and int literals (#2799)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Felix Hildén <felix.hilden@gmail.com>
2 years agomore trailing comma tests (#2810)
Jelle Zijlstra [Thu, 27 Jan 2022 03:44:39 +0000 (19:44 -0800)]
more trailing comma tests (#2810)

2 years agoblack-primer: stop running it (#2809)
Jelle Zijlstra [Thu, 27 Jan 2022 01:18:43 +0000 (17:18 -0800)]
black-primer: stop running it (#2809)

At the moment, it's just a source of spurious CI failures and busywork
updating the configuration file.

Unlike diff-shades, it is run across many different platforms and
Python versions, but that doesn't seem essential. We already run unit
tests across platforms and versions.

I chose to leave the code around for now in case somebody is using it,
but CI will no longer run it.

2 years agoFix crash on some power hugging cases (#2806)
Jelle Zijlstra [Thu, 27 Jan 2022 00:47:36 +0000 (16:47 -0800)]
Fix crash on some power hugging cases (#2806)

Found by the fuzzer. Repro case:

python -m black -c 'importA;()<<0**0#'

2 years agoproperly run ourselves twice (#2807)
Jelle Zijlstra [Tue, 25 Jan 2022 23:58:58 +0000 (15:58 -0800)]
properly run ourselves twice (#2807)

The previous run-twice logic only affected the stability checks but not the output. Now, we actually output the twice-formatted code.

2 years agoHug power operators if its operands are "simple" (#2726)
Richard Si [Tue, 25 Jan 2022 03:13:34 +0000 (22:13 -0500)]
Hug power operators if its operands are "simple" (#2726)

Since power operators almost always have the highest binding power in expressions, it's often more readable to hug it with its operands. The main exception to this is when its operands are non-trivial in which case the power operator will not hug, the rule for this is the following:

> For power ops, an operand is considered "simple" if it's only a NAME, numeric CONSTANT, or attribute access (chained attribute access is allowed), with or without a preceding unary operator.

Fixes GH-538.
Closes GH-2095.

diff-shades results: https://gist.github.com/ichard26/ca6c6ad4bd1de5152d95418c8645354b

Co-authored-by: Diego <dpalma@evernote.com>
Co-authored-by: Felix Hildén <felix.hilden@gmail.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2 years agoMake SRC or code mandatory and mutually exclusive (#2360) (#2804)
Felix Hildén [Mon, 24 Jan 2022 15:35:56 +0000 (17:35 +0200)]
Make SRC or code mandatory and mutually exclusive (#2360) (#2804)

Closes #2360: I'd like to make passing SRC or `--code` mandatory and the arguments mutually exclusive. This will change our (partially already broken) promises of CLI behavior, but I'll comment below.

2 years agoUse `magic_trailing_comma` and `preview` for `FileMode` in `fuzz` (#2802)
Nikita Sobolev [Sun, 23 Jan 2022 20:34:29 +0000 (23:34 +0300)]
Use `magic_trailing_comma` and `preview` for `FileMode` in `fuzz` (#2802)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2 years agoRemove Beta mentions in README + Docs (#2801)
Cooper Lees [Sun, 23 Jan 2022 20:34:01 +0000 (12:34 -0800)]
Remove Beta mentions in README + Docs (#2801)

- State we're now stable and that we'll uphold our formatting changes as per policy
- Link to The Black Style doc.

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2 years agoAllow blackd to be run as a package (#2800)
Richard Si [Sun, 23 Jan 2022 16:49:11 +0000 (11:49 -0500)]
Allow blackd to be run as a package (#2800)

2 years agoEnable pattern matching by default (#2758)
Batuhan Taskaya [Sat, 22 Jan 2022 20:05:26 +0000 (23:05 +0300)]
Enable pattern matching by default (#2758)

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoMention "skip news" label in CHANGELOG action (#2797)
Shantanu [Sat, 22 Jan 2022 15:30:18 +0000 (07:30 -0800)]
Mention "skip news" label in CHANGELOG action (#2797)

Co-authored-by: hauntsaninja <>
2 years agoRefactor logic for stub empty lines (#2796)
Shantanu [Sat, 22 Jan 2022 15:29:38 +0000 (07:29 -0800)]
Refactor logic for stub empty lines (#2796)

This PR is intended to have no change to semantics.

This is in preparation for #2784 which will likely introduce more logic
that depends on `current_line.depth`.

Inlining the subtraction gets rid of offsetting and makes it much easier
to see what the result will be.

2 years agoMark Felix and Batuhan as maintainers (#2794)
Richard Si [Sat, 22 Jan 2022 11:08:27 +0000 (06:08 -0500)]
Mark Felix and Batuhan as maintainers (#2794)

Y'all deserve it :)

2 years agoAllow setting custom cache directory on all platforms (#2739)
Perry Vargas [Sat, 22 Jan 2022 06:00:33 +0000 (22:00 -0800)]
Allow setting custom cache directory on all platforms (#2739)

Fixes #2506

``XDG_CACHE_HOME`` does not work on Windows. To allow for users to set a custom cache directory on all systems I added a new environment variable ``BLACK_CACHE_DIR`` to set the cache directory. The default remains the same so users will only notice a change if that environment variable is set.

The specific use case I have for this is I need to run black on in different processes at the same time. There is a race condition with the cache pickle file that made this rather difficult. A custom cache directory will remove the race condition.

I created ``get_cache_dir`` function in order to test the logic. This is only used to set the ``CACHE_DIR`` constant.

2 years agoSwitch to Furo (#2793)
Richard Si [Fri, 21 Jan 2022 23:00:13 +0000 (18:00 -0500)]
Switch to Furo (#2793)

- Add Furo dependency to docs/requirements.txt
- Drop a fair bit of theme configuration
- Fix the toctree declarations in index.rst
- Move stuff around as Furo isn't 100% compatible with Alabaster

Furo was chosen as it provides excellent mobile support, user
controllable light/dark theming, and is overall easier to read

2 years agoadd wind technology software projects using black (#2792)
Rob Hammond [Fri, 21 Jan 2022 18:23:26 +0000 (11:23 -0700)]
add wind technology software projects using black (#2792)

2 years agoSet `click` lower bound to `8.0.0` (#2791)
Shivansh-007 [Fri, 21 Jan 2022 16:54:57 +0000 (22:24 +0530)]
Set `click` lower bound to `8.0.0` (#2791)

Closes #2774

2 years agoAdd support for custom python cell magics (#2744)
Michael Marino [Fri, 21 Jan 2022 00:45:28 +0000 (01:45 +0100)]
Add support for custom python cell magics (#2744)

Fixes #2742.

This PR adds the ability to configure additional python cell magics. This
will allow formatting cells in Jupyter Notebooks that are using custom (python)
magics.

2 years agoHint at likely cause of ast parsing failure in error message (#2786)
emfdavid [Thu, 20 Jan 2022 23:48:49 +0000 (18:48 -0500)]
Hint at likely cause of ast parsing failure in error message (#2786)

Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoDeprecate ESP and move the functionality under --preview (#2789)
Felix Hildén [Thu, 20 Jan 2022 23:42:07 +0000 (01:42 +0200)]
Deprecate ESP and move the functionality under --preview (#2789)

2 years agoFix and speedup diff-shades integration (#2773)
Richard Si [Thu, 20 Jan 2022 03:05:58 +0000 (22:05 -0500)]
Fix and speedup diff-shades integration  (#2773)

2 years agoCreate --preview CLI flag (#2752)
Felix Hildén [Thu, 20 Jan 2022 01:34:52 +0000 (03:34 +0200)]
Create --preview CLI flag (#2752)

2 years agoFix typo in diff_shades.yml workflow (#2778)
Jelle Zijlstra [Mon, 17 Jan 2022 15:52:29 +0000 (07:52 -0800)]
Fix typo in diff_shades.yml workflow (#2778)

2 years agoBump sphinx from 4.3.2 to 4.4.0 in /docs (#2776)
dependabot[bot] [Mon, 17 Jan 2022 14:50:27 +0000 (06:50 -0800)]
Bump sphinx from 4.3.2 to 4.4.0 in /docs (#2776)

Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.3.2 to 4.4.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v4.3.2...v4.4.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years ago[trivial] Use proper test cases on `unittest` (#2775)
Batuhan Taskaya [Sat, 15 Jan 2022 22:19:37 +0000 (01:19 +0300)]
[trivial] Use proper test cases on `unittest` (#2775)

2 years agoDont require typing-extensions in 3.10 (GH-2772)
Marco Edward Gorelli [Sat, 15 Jan 2022 04:24:55 +0000 (04:24 +0000)]
Dont require typing-extensions in 3.10 (GH-2772)

3.10 ships with TypeGuard which is the newest feature we need.

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoCI: add diff-shades integration (#2725)
Richard Si [Fri, 14 Jan 2022 02:50:02 +0000 (21:50 -0500)]
CI: add diff-shades integration (#2725)

Hopefully this makes it much easier to gauge the impacts of future
changes!

2 years agoAdded decent coloring (#2712)
VanSHOE [Fri, 14 Jan 2022 02:31:08 +0000 (08:01 +0530)]
Added decent coloring (#2712)

2 years agoDon't make redundant copies of the DFA (#2763)
Batuhan Taskaya [Fri, 14 Jan 2022 02:01:44 +0000 (05:01 +0300)]
Don't make redundant copies of the DFA (#2763)

2 years agoNormalise string prefix order (#2297)
Felix Hildén [Thu, 13 Jan 2022 17:59:43 +0000 (19:59 +0200)]
Normalise string prefix order (#2297)

Closes #2171

2 years agodon't expect changes on poetry (#2769)
Jelle Zijlstra [Thu, 13 Jan 2022 17:33:56 +0000 (09:33 -0800)]
don't expect changes on poetry (#2769)

They just made themselves ESP-compliant in https://github.com/python-poetry/poetry/commit/ecb030e1f0b7c13cc11971f00ee5012e82a892bc

2 years agoChange installation url to comply with git security change (#2765)
Jeffrey Lazar [Tue, 11 Jan 2022 22:37:07 +0000 (17:37 -0500)]
Change installation url to comply with git security change (#2765)

Co-authored-by: Jeffrey Lazar <jlazar@MacBook-Pro-2.local>
2 years agoChange git url for pip installation in README (#2761)
cbows [Tue, 11 Jan 2022 17:31:07 +0000 (18:31 +0100)]
Change git url for pip installation in README (#2761)

* Change git url for pip installation in README

Unauthenticated git protocol was disabled recently by Github and should not be used anymore.

https://github.blog/2021-09-01-improving-git-protocol-security-github/#no-more-unauthenticated-git

* Update CHANGES.md

2 years agoFix handling of standalone match/case with newlines/comments (#2760)
Batuhan Taskaya [Mon, 10 Jan 2022 20:22:07 +0000 (23:22 +0300)]
Fix handling of standalone match/case with newlines/comments (#2760)

Resolves #2759

2 years agoSpeed up new backtracking parser (#2728)
Batuhan Taskaya [Mon, 10 Jan 2022 18:22:00 +0000 (21:22 +0300)]
Speed up new backtracking parser (#2728)

2 years agoEnhance `--verbose` (#2526)
Shivansh-007 [Mon, 10 Jan 2022 13:58:35 +0000 (19:28 +0530)]
Enhance `--verbose` (#2526)

Black would now echo the location that it determined as the root path
for the project if `--verbose` is enabled by the user, according to
which it chooses the SRC paths, i.e. the absolute path of the project
is `{root}/{src}`.

Closes #1880

2 years agoRemove Python 2 support (#2740)
Richard Si [Mon, 10 Jan 2022 12:16:30 +0000 (07:16 -0500)]
Remove Python 2 support (#2740)

*blib2to3's support was left untouched because: 1) I don't want to touch
parsing machinery, and 2) it'll allow us to provide a more useful error
message if someone does try to format Python 2 code.

2 years agoFix call patterns that contain as-expression on the kwargs (#2749)
Batuhan Taskaya [Fri, 7 Jan 2022 16:51:36 +0000 (19:51 +0300)]
Fix call patterns that contain as-expression on the kwargs (#2749)

2 years agoAction: Support running in a docker container (#2748)
Josh Owen [Fri, 7 Jan 2022 16:50:50 +0000 (11:50 -0500)]
Action: Support running in a docker container (#2748)

see: https://github.com/actions/runner/issues/716

2 years agoStubs: preserve blank line between attributes and methods (#2736)
Richard Si [Fri, 7 Jan 2022 16:38:03 +0000 (11:38 -0500)]
Stubs: preserve blank line between attributes and methods (#2736)

2 years agoImprove CLI reference wording (#2753)
Felix Hildén [Fri, 7 Jan 2022 16:19:03 +0000 (18:19 +0200)]
Improve CLI reference wording (#2753)

2 years agoDocumentation: include Wing IDE 8 integrations (GH-2733)
Gunung Pambudi Wibisono [Sun, 2 Jan 2022 03:33:20 +0000 (10:33 +0700)]
Documentation: include Wing IDE 8 integrations (GH-2733)

Wing IDE 8 now supports autoformatting w/ Black natively 🎉

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoPrimer: exclude crashing sqlalchemy file for now (GH-2735)
Richard Si [Fri, 31 Dec 2021 00:59:53 +0000 (19:59 -0500)]
Primer: exclude crashing sqlalchemy file for now (GH-2735)

Until we can properly look into and fix it.
-> https://github.com/psf/black/issues/2734

2 years agoDrop upper version bounds on dependencies (GH-2718)
Jelle Zijlstra [Thu, 30 Dec 2021 21:17:11 +0000 (22:17 +0100)]
Drop upper version bounds on dependencies (GH-2718)

They mostly cause unnecessary trouble.

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoSupport pytest 7 by fixing broken imports (GH-2705)
Miro Hrončok [Sat, 25 Dec 2021 03:28:43 +0000 (04:28 +0100)]
Support pytest 7 by fixing broken imports (GH-2705)

The tmp_path related changes are not necessary to make pytest 7 work,
but it feels more complete this way.

2 years agoremove all type: ignores in src/black (GH-2720)
Marco Edward Gorelli [Sat, 25 Dec 2021 02:25:03 +0000 (02:25 +0000)]
remove all type: ignores in src/black (GH-2720)

Excet
;t

2 years agoUpdate contributing wording (#2719)
Felix Hildén [Tue, 21 Dec 2021 18:43:10 +0000 (20:43 +0200)]
Update contributing wording (#2719)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoSupport multiple top-level as-expressions on case statements (#2716)
Batuhan Taskaya [Tue, 21 Dec 2021 18:16:55 +0000 (21:16 +0300)]
Support multiple top-level as-expressions on case statements (#2716)

2 years agoRemove usage of Pipenv, rely on good ol' `pip` and `virtualenv` in docs (#2717)
Łukasz Langa [Tue, 21 Dec 2021 16:24:20 +0000 (17:24 +0100)]
Remove usage of Pipenv, rely on good ol' `pip` and `virtualenv` in docs (#2717)

2 years agoDefine is_name_token (and friends) to resolve some `type: ignore`s (GH-2714)
Marco Edward Gorelli [Tue, 21 Dec 2021 16:20:55 +0000 (16:20 +0000)]
Define is_name_token (and friends) to resolve some `type: ignore`s (GH-2714)

Gets rid of a few # type: ignores by using TypeGuard.

2 years agoDisable universal newlines when reading TOML (#2408)
Taneli Hukkinen [Tue, 21 Dec 2021 16:03:07 +0000 (18:03 +0200)]
Disable universal newlines when reading TOML (#2408)

2 years agoBump myst-parser from 0.16.0 to 0.16.1 in /docs (#2710)
dependabot[bot] [Mon, 20 Dec 2021 15:42:03 +0000 (07:42 -0800)]
Bump myst-parser from 0.16.0 to 0.16.1 in /docs (#2710)

Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 0.16.0 to 0.16.1.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v0.16.0...v0.16.1)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoBump sphinx from 4.3.1 to 4.3.2 in /docs (#2709)
dependabot[bot] [Mon, 20 Dec 2021 15:24:53 +0000 (07:24 -0800)]
Bump sphinx from 4.3.1 to 4.3.2 in /docs (#2709)

Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v4.3.1...v4.3.2)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoImply 3.8+ when annotated assigments used with unparenthesized tuples (#2708)
Batuhan Taskaya [Fri, 17 Dec 2021 21:43:14 +0000 (00:43 +0300)]
Imply 3.8+ when annotated assigments used with unparenthesized tuples (#2708)

2 years agoUse 'python -m build' to build wheel and source distributions (#2701)
Mike Taves [Thu, 16 Dec 2021 03:35:01 +0000 (16:35 +1300)]
Use 'python -m build' to build wheel and source distributions (#2701)

2 years agoUnpacking on flow constructs (return/yield) now implies 3.8+ (#2700)
Batuhan Taskaya [Thu, 16 Dec 2021 00:17:33 +0000 (03:17 +0300)]
Unpacking on flow constructs (return/yield) now implies 3.8+ (#2700)

2 years agoBump pre-commit/action from 2.0.2 to 2.0.3 (GH-2695)
dependabot[bot] [Wed, 15 Dec 2021 23:55:26 +0000 (18:55 -0500)]
Bump pre-commit/action from 2.0.2 to 2.0.3 (GH-2695)

Bumps [pre-commit/action](https://github.com/pre-commit/action) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/pre-commit/action/releases)
- [Commits](https://github.com/pre-commit/action/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: pre-commit/action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoBump myst-parser from 0.15.2 to 0.16.0 in /docs (GH-2696)
dependabot[bot] [Wed, 15 Dec 2021 23:26:01 +0000 (18:26 -0500)]
Bump myst-parser from 0.15.2 to 0.16.0 in /docs (GH-2696)

Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 0.15.2 to 0.16.0.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v0.15.2...v0.16.0)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoInclude underlying error when AST safety check parsing fails (#2693)
Richard Si [Wed, 15 Dec 2021 02:21:28 +0000 (21:21 -0500)]
Include underlying error when AST safety check parsing fails (#2693)

2 years agouse valid package-ecosystem key (#2694)
aru [Wed, 15 Dec 2021 02:21:15 +0000 (21:21 -0500)]
use valid package-ecosystem key (#2694)

2 years agochore: dump docs deps and pre-commit hooks (#2676)
Richard Si [Wed, 15 Dec 2021 01:25:47 +0000 (20:25 -0500)]
chore: dump docs deps and pre-commit hooks (#2676)

2 years agoDon't colour diff headers white, only bold (GH-2691)
Richard Si [Wed, 15 Dec 2021 00:32:14 +0000 (19:32 -0500)]
Don't colour diff headers white, only bold (GH-2691)

So people with light themed terminals can still read 'em.

2 years ago`from __future__ import annotations` now implies 3.7+ (#2690)
Batuhan Taskaya [Tue, 14 Dec 2021 23:22:56 +0000 (02:22 +0300)]
`from __future__ import annotations` now implies 3.7+ (#2690)

2 years agoSupport as-expressions on dict items (GH-2686)
Batuhan Taskaya [Sun, 12 Dec 2021 21:10:22 +0000 (00:10 +0300)]
Support as-expressions on dict items (GH-2686)

2 years agoShow details when a regex fails to compile (GH-2678)
Jelle Zijlstra [Wed, 8 Dec 2021 03:13:05 +0000 (19:13 -0800)]
Show details when a regex fails to compile (GH-2678)

2 years agono longer expect changes on pyanalyze (#2674)
Jelle Zijlstra [Sun, 5 Dec 2021 23:47:53 +0000 (15:47 -0800)]
no longer expect changes on pyanalyze (#2674)

https://github.com/quora/pyanalyze/pull/316

2 years agoPrepare for release 21.12b0 (GH-2673)
Richard Si [Sun, 5 Dec 2021 21:39:34 +0000 (16:39 -0500)]
Prepare for release 21.12b0 (GH-2673)

Let's do this!

2 years agoperf: drop the initial stack copy (#2670)
Batuhan Taskaya [Sun, 5 Dec 2021 21:03:48 +0000 (00:03 +0300)]
perf: drop the initial stack copy (#2670)

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoblib2to3 can raise TokenError and IndentationError too (#2671)
Richard Si [Sun, 5 Dec 2021 16:53:58 +0000 (11:53 -0500)]
blib2to3 can raise TokenError and IndentationError too (#2671)

2 years agoReorganize changelog (#2669)
Jelle Zijlstra [Sat, 4 Dec 2021 23:57:40 +0000 (15:57 -0800)]
Reorganize changelog (#2669)

I believe it would be useful to split up the long list of changes a bit more.

Specific changes:
- Removed the entry for new flake8 plugins; this is purely internal and not of interest to users
- Put regex in the packaging section
- New section for Jupyter Notebook
- New section for Python 3.10, mostly match/case stuff

2 years agotell users to use -t py310 (#2668)
Jelle Zijlstra [Sat, 4 Dec 2021 23:30:23 +0000 (15:30 -0800)]
tell users to use -t py310 (#2668)

2 years agoDon't let TokenError bubble up from lib2to3_parse (GH-2343)
Tanvi Moharir [Sat, 4 Dec 2021 20:21:26 +0000 (01:51 +0530)]
Don't let TokenError bubble up from lib2to3_parse (GH-2343)

error: cannot format <string>: ('EOF in multi-line statement', (2, 0))

 ▲ before ▼ after

error: cannot format <string>: Cannot parse: 2:0: EOF in multi-line statement

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoMake star-expression spacing consistent in match/case (#2667)
Batuhan Taskaya [Fri, 3 Dec 2021 14:49:33 +0000 (17:49 +0300)]
Make star-expression spacing consistent in match/case (#2667)

2 years agoRemove regex dependency (GH-2663)
Jelle Zijlstra [Thu, 2 Dec 2021 22:35:02 +0000 (14:35 -0800)]
Remove regex dependency (GH-2663)

We were no longer using it since GH-2644 and GH-2654. This should hopefully
make using Black easier to use as there's one less compiled dependency.
The core team also doesn't have to deal with the surprisingly frequent fires
the regex packaging setup goes through.

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agoEnsure match/case are recognized as statements (#2665)
Batuhan Taskaya [Thu, 2 Dec 2021 17:58:22 +0000 (20:58 +0300)]
Ensure match/case are recognized as statements (#2665)

2 years agoTreat functions/classes in blocks as if they're nested (GH-2472)
Richard Si [Wed, 1 Dec 2021 23:05:59 +0000 (18:05 -0500)]
Treat functions/classes in blocks as if they're nested (GH-2472)

* Treat functions/classes in blocks as if they're nested

One curveball is that we still want two preceding newlines before blocks
that are probably logically disconnected. In other words:

    if condition:

        def foo():
            return "hi"
                             # <- aside: this is the goal of this commit
    else:

        def foo():
            return "cya"
                             # <- the two newlines spacing here should stay
                             #    since this probably isn't related
    with open("db.json", encoding="utf-8") as f:
        data = f.read()

Unfortunately that means we have to special case specific clause types
instead of just being able to just for a colon leaf. The hack used here
is to check whether we're adding preceding newlines for a standalone or
dependent clause. "Standalone" being a clause that doesn't need another
clause to be valid (eg. if) and vice versa.

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2 years agoslightly better example link (#2617)
Jelle Zijlstra [Wed, 1 Dec 2021 21:47:33 +0000 (13:47 -0800)]
slightly better example link (#2617)

Since we also need to update two places in the docs

2 years agoFix determination of f-string expression spans (#2654)
Shantanu [Wed, 1 Dec 2021 17:52:24 +0000 (09:52 -0800)]
Fix determination of f-string expression spans (#2654)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
2 years agofix error message for match (#2649)
Jelle Zijlstra [Wed, 1 Dec 2021 02:39:39 +0000 (18:39 -0800)]
fix error message for match (#2649)

Fixes #2648.

Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>
2 years agoReduce usage of regex (#2644)
Jelle Zijlstra [Wed, 1 Dec 2021 02:01:36 +0000 (18:01 -0800)]
Reduce usage of regex (#2644)

This removes all but one usage of the `regex` dependency. Tricky bits included:
- A bug in test_black.py where we were incorrectly using a character range. Fix also submitted separately in #2643.
- `tokenize.py` was the original use case for regex (#1047). The important bit is that we rely on `\w` to match anything valid in an identifier, and `re` fails to match a few characters as part of identifiers. My solution is to instead match all characters *except* those we know to mean something else in Python: whitespace and ASCII punctuation. This will make Black able to parse some invalid Python programs, like those that contain non-ASCII punctuation in the place of an identifier, but that seems fine to me.
- One import of `regex` remains, in `trans.py`. We use a recursive regex to parse f-strings, and only `regex` supports that. I haven't thought of a better fix there (except maybe writing a manual parser), so I'm leaving that for now.

My goal is to remove the `regex` dependency to reduce the risk of breakage due to dependencies and make life easier for users on platforms without wheels.

2 years agoFix line generation for `match match:` / `case case:` (GH-2661)
Batuhan Taskaya [Tue, 30 Nov 2021 20:56:38 +0000 (23:56 +0300)]
Fix line generation for `match match:` / `case case:` (GH-2661)

2 years agoadd FAQ entry about undetected syntax errors (#2645)
Jelle Zijlstra [Tue, 30 Nov 2021 20:34:45 +0000 (12:34 -0800)]
add FAQ entry about undetected syntax errors (#2645)

This came up in #2644.

2 years agoRemove hidden import from PyInstaller build (#2657)
Jameel Al-Aziz [Tue, 30 Nov 2021 16:20:27 +0000 (08:20 -0800)]
Remove hidden import from PyInstaller build (#2657)

The recent 2021.4 release of pyinstaller-hooks-contrib now contains a
built-in hook for platformdirs. Manually specifying the hidden import
arg should no longer be needed.

2 years agoAllow top-level starred expression on match (#2659)
Batuhan Taskaya [Tue, 30 Nov 2021 15:52:25 +0000 (18:52 +0300)]
Allow top-level starred expression on match (#2659)

Fixes #2647

2 years agoReturn `NothingChanged` if non-Python cell magic is detected, to avoid tokenize error...
Daniel Sparing [Mon, 29 Nov 2021 23:07:35 +0000 (18:07 -0500)]
Return `NothingChanged` if non-Python cell magic is detected, to avoid tokenize error (#2630)

Fixes https://github.com/psf/black/issues/2627 , a non-Python cell magic such as `%%writeline` can legitimately contain "incorrect" indentation, however this causes `tokenize-rt` to return an error. To avoid this, `validate_cell` should early detect cell magics (just like it detects `TransformerManager` transformations).

Test added too, in the shape of a "badly indented" `%%writefile` within `test_non_python_magics`.

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Marco Edward Gorelli <marcogorelli@protonmail.com>
2 years agoadd more flake8 lints (#2653)
danieleades [Mon, 29 Nov 2021 02:20:52 +0000 (02:20 +0000)]
add more flake8 lints (#2653)

2 years agoadd missing f-string (#2650)
Marco Edward Gorelli [Sat, 27 Nov 2021 02:53:16 +0000 (02:53 +0000)]
add missing f-string (#2650)

2 years ago Assignment to env var in Jupyter Notebook doesn't round-trip (#2642)
Marco Edward Gorelli [Fri, 26 Nov 2021 16:14:57 +0000 (16:14 +0000)]
 Assignment to env var in Jupyter Notebook doesn't round-trip (#2642)

closes #2641

2 years agofix regex (#2643)
Jelle Zijlstra [Fri, 26 Nov 2021 02:34:19 +0000 (18:34 -0800)]
fix regex (#2643)

2 years agoREADME: Add KeepTruckin to the list of orgs (GH-2638)
Wael Nasreddine [Fri, 26 Nov 2021 01:09:47 +0000 (17:09 -0800)]
README: Add KeepTruckin to the list of orgs (GH-2638)

At KT, we used Black to format all Python code in our Mono-repo.

Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
2 years agogrammar: accept open sequences on match subject (GH-2639)
Batuhan Taskaya [Thu, 25 Nov 2021 01:21:36 +0000 (04:21 +0300)]
grammar: accept open sequences on match subject (GH-2639)

* grammar: accept open sequences on match subject
* give an example about the fixed match subject

2 years agoChange `cfg` to `ini` for text highlighting (#2632)
Ash [Sun, 21 Nov 2021 15:02:08 +0000 (15:02 +0000)]
Change `cfg` to `ini` for text highlighting (#2632)