From nobody Tue Oct 11 15:40:05 2022 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Mn0VY4Qw1z4dlG5; Tue, 11 Oct 2022 15:45:41 +0000 (UTC) (envelope-from amdmi3@amdmi3.ru) Received: from sprint-2.amdmi3.ru (sprint-2.amdmi3.ru [185.185.68.145]) by mx1.freebsd.org (Postfix) with ESMTP id 4Mn0VX1LKWz3vtH; Tue, 11 Oct 2022 15:45:40 +0000 (UTC) (envelope-from amdmi3@amdmi3.ru) Received: from amdmi3.ru (localhost [127.0.0.1]) by sprint-2.amdmi3.ru (Postfix) with SMTP id 5F834188E3D; Tue, 11 Oct 2022 18:45:52 +0300 (MSK) Received: by amdmi3.ru (nbSMTP-1.00) for uid 1000 amdmi3@amdmi3.ru; Tue, 11 Oct 2022 18:45:52 +0300 (MSK) Date: Tue, 11 Oct 2022 18:40:05 +0300 From: Dmitry Marakasov To: Po-Chuan Hsieh Cc: ports-committers@freebsd.org, dev-commits-ports-all@freebsd.org, dev-commits-ports-main@freebsd.org Subject: Re: git: dea032cba8b3 - main - devel/py-black: Update to 22.10.0 Message-ID: References: <202210091949.299JnTpD057935@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: <202210091949.299JnTpD057935@gitrepo.freebsd.org> X-Rspamd-Queue-Id: 4Mn0VX1LKWz3vtH X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of amdmi3@amdmi3.ru has no SPF policy when checking 185.185.68.145) smtp.mailfrom=amdmi3@amdmi3.ru X-Spamd-Result: default: False [-2.00 / 15.00]; AUTH_NA(1.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.997]; MIME_GOOD(-0.10)[text/plain]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-ports-all@freebsd.org,dev-commits-ports-main@freebsd.org]; RCVD_COUNT_THREE(0.00)[3]; R_DKIM_NA(0.00)[]; R_SPF_NA(0.00)[no SPF record]; ARC_NA(0.00)[]; DMARC_NA(0.00)[amdmi3.ru]; FROM_HAS_DN(0.00)[]; FREEFALL_USER(0.00)[amdmi3]; MIME_TRACE(0.00)[0:+]; RCPT_COUNT_THREE(0.00)[4]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_SOME(0.00)[]; ASN(0.00)[asn:35278, ipnet:185.185.68.0/22, country:RU] X-ThisMailContainsUnwantedMimeParts: N * Po-Chuan Hsieh (sunpoet@FreeBSD.org) wrote: > The branch main has been updated by sunpoet: >=20 > URL: https://cgit.FreeBSD.org/ports/commit/?id=3Ddea032cba8b338a23c5bfdcc= 51327e2dce5855a3 >=20 > commit dea032cba8b338a23c5bfdcc51327e2dce5855a3 > Author: Po-Chuan Hsieh > AuthorDate: 2022-10-09 19:43:59 +0000 > Commit: Po-Chuan Hsieh > CommitDate: 2022-10-09 19:45:27 +0000 >=20 > devel/py-black: Update to 22.10.0 This does not build: configuration error: `project.license` must be valid exactly by one definit= ion (2 matches found): - keys: 'file': {type: string} required: ['file'] - keys: 'text': {type: string} required: ['text'] DESCRIPTION: `Project license `_. GIVEN VALUE: "MIT" OFFENDING RULE: 'oneOf' DEFINITION: { "oneOf": [ { "properties": { "file": { "type": "string", "$$description": [ "Relative path to the file (UTF-8) which contai= ns the license for the", "project." ] } }, "required": [ "file" ] }, { "properties": { "text": { "type": "string", "$$description": [ "The license of the project whose meaning is th= at of the", "`License field from the core metadata", "`_." ] } }, "required": [ "text" ] } ] } Traceback (most recent call last): File "", line 1, in File "setup.py", line 4, in setup( File "/usr/local/lib/python3.9/site-packages/setuptools/__init__.py", lin= e 87, in setup return distutils.core.setup(**attrs) File "/usr/local/lib/python3.9/site-packages/setuptools/_distutils/core.p= y", line 151, in setup dist.parse_config_files() File "/usr/local/lib/python3.9/site-packages/setuptools/dist.py", line 86= 8, in parse_config_files pyprojecttoml.apply_configuration(self, filename, ignore_option_errors) File "/usr/local/lib/python3.9/site-packages/setuptools/config/pyprojectt= oml.py", line 58, in apply_configuration config =3D read_configuration(filepath, True, ignore_option_errors, dis= t) File "/usr/local/lib/python3.9/site-packages/setuptools/config/pyprojectt= oml.py", line 122, in read_configuration validate(subset, filepath) File "/usr/local/lib/python3.9/site-packages/setuptools/config/pyprojectt= oml.py", line 47, in validate raise error from None ValueError: invalid pyproject.toml config: `project.license` > Changes: https://github.com/psf/black/releases > --- > devel/py-black/Makefile | 7 +++-- > devel/py-black/distinfo | 6 ++-- > devel/py-black/files/setup.py | 64 +++++++++++++++++++++++++++++++++++++= ++++++ > 3 files changed, 72 insertions(+), 5 deletions(-) >=20 > diff --git a/devel/py-black/Makefile b/devel/py-black/Makefile > index 46815f49d5af..bca55d088998 100644 > --- a/devel/py-black/Makefile > +++ b/devel/py-black/Makefile > @@ -1,5 +1,5 @@ > PORTNAME=3D black > -PORTVERSION=3D 22.8.0 > +PORTVERSION=3D 22.10.0 > CATEGORIES=3D devel python > MASTER_SITES=3D CHEESESHOP > PKGNAMEPREFIX=3D ${PYTHON_PKGNAMEPREFIX} > @@ -24,7 +24,7 @@ TEST_DEPENDS=3D ${PYTHON_PKGNAMEPREFIX}coverage>=3D5.3:= devel/py-coverage@${PY_FLAVOR > ${PYTHON_PKGNAMEPREFIX}pytest-xdist>=3D2.2.1:devel/py-pytest-xdist@${P= Y_FLAVOR} \ > ${PYTHON_PKGNAMEPREFIX}tokenize-rt>=3D3.2.0:devel/py-tokenize-rt@${PY_= FLAVOR} > =20 > -USES=3D python:3.6+ > +USES=3D python:3.7+ > USE_PYTHON=3D autoplist concurrent distutils pytest > =20 > NO_ARCH=3D yes > @@ -57,4 +57,7 @@ RUN_DEPENDS+=3D ${PYTHON_PKGNAMEPREFIX}typing-extension= s>=3D3.10.0.0:devel/py-typing > RUN_DEPENDS+=3D ${PYTHON_PKGNAMEPREFIX}tomli>=3D1.1.0:textproc/py-tomli@= ${PY_FLAVOR} > .endif > =20 > +post-patch: > + @${SED} -e 's|%%PORTVERSION%%|${PORTVERSION}|' ${FILESDIR}/setup.py > $= {WRKSRC}/setup.py > + > .include > diff --git a/devel/py-black/distinfo b/devel/py-black/distinfo > index 6703870a233f..5ac643f572a8 100644 > --- a/devel/py-black/distinfo > +++ b/devel/py-black/distinfo > @@ -1,3 +1,3 @@ > -TIMESTAMP =3D 1662212146 > -SHA256 (black-22.8.0.tar.gz) =3D 792f7eb540ba9a17e8656538701d3eb1afcb134= e3b45b71f20b25c77a8db7e6e > -SIZE (black-22.8.0.tar.gz) =3D 577317 > +TIMESTAMP =3D 1665330622 > +SHA256 (black-22.10.0.tar.gz) =3D f513588da599943e0cde4e32cc9879e825d587= 20d6557062d1098c5ad80080e1 > +SIZE (black-22.10.0.tar.gz) =3D 547735 > diff --git a/devel/py-black/files/setup.py b/devel/py-black/files/setup.py > new file mode 100644 > index 000000000000..ffc921fbadbc > --- /dev/null > +++ b/devel/py-black/files/setup.py > @@ -0,0 +1,64 @@ > +# -*- coding: utf-8 -*- > +from setuptools import setup > + > +setup( > + name=3D'black', > + version=3D'%%PORTVERSION%%', > + description=3D'The uncompromising code formatter.', > + long_description=3D'[![Black Logo](https://raw.githubusercontent.com= /psf/black/main/docs/_static/logo2-readme.png)](https://black.readthedocs.i= o/en/stable/)\n\n

The Uncompromising Code Formatter\n\n

\n3D"Actions\n3D"Documentation\n3D"Coverage\n= 3D"Lice=\n3D"PyPI"\n ch/project/black">3D"Downloads"\n=3D"conda-forge"\n\n

\n\n> =E2=80=9CAny color you like.=E2=80=9D\n\= n_Black_ is the uncompromising Python code formatter. By using it, you agre= e to cede\ncontrol over minutiae of hand-formatting. In return, _Black_ giv= es you speed,\ndeterminism, and freedom from `pycodestyle` nagging about fo= rmatting. You will save time\nand mental energy for more important matters.= \n\nBlackened code looks the same regardless of the project you\'re reading= =2E Formatting\nbecomes transparent after a while and you can focus on the = content instead.\n\n_Black_ makes code review faster by producing the small= est diffs possible.\n\nTry it out now using the [Black Play > ground](https://black.vercel.app). Watch the! > \n[PyCon 2019 talk](https://youtu.be/esZLCuWs_2Y) to learn more.\n\n---\= n\n**[Read the documentation on ReadTheDocs!](https://black.readthedocs.io/= en/stable)**\n\n---\n\n## Installation and usage\n\n### Installation\n\n_Bl= ack_ can be installed by running `pip install black`. It requires Python 3.= 7+ to run.\nIf you want to format Jupyter Notebooks, install with `pip inst= all \'black[jupyter]\'`.\n\nIf you can\'t wait for the latest _hotness_ and= want to install from GitHub, use:\n\n`pip install git+https://github.com/p= sf/black`\n\n### Usage\n\nTo get started right away with sensible defaults:= \n\n```sh\nblack {source_file_or_directory}\n```\n\nYou can run _Black_ as = a package if running it as a script doesn\'t work:\n\n```sh\npython -m blac= k {source_file_or_directory}\n```\n\nFurther information can be found in ou= r docs:\n\n- [Usage and Configuration](https://black.readthedocs.io/en/stab= le/usage_and_configuration/index.html)\n\n_Black_ is already [successfully = used](https://github.com/ > psf/black#used-by) by many\nprojects, small and big. _Black_ has a compr= ehensive test suite, with efficient parallel\ntests, and our own auto forma= tting and parallel Continuous Integration runner. Now that\nwe have become = stable, you should not expect large formatting to changes in the future.\nS= tylistic changes will mostly be responses to bug reports and support for ne= w Python\nsyntax. For more information please refer to the\n[The Black Code= Style](https://black.readthedocs.io/en/stable/the_black_code_style/index.h= tml).\n\nAlso, as a safety measure which slows down processing, _Black_ wil= l check that the\nreformatted code still produces a valid AST that is effec= tively equivalent to the\noriginal (see the\n[Pragmatism](https://black.rea= dthedocs.io/en/stable/the_black_code_style/current_style.html#ast-before-an= d-after-formatting)\nsection for details). If you\'re feeling confident, us= e `--fast`.\n\n## The _Black_ code style\n\n_Black_ is a PEP 8 compliant op= inionated formatter. _Bla > ck_ reformats entire files in\nplace. Style ! > configura! > tion options are deliberately limited and rarely added. It doesn\'t\ntak= e previous formatting into account (see\n[Pragmatism](https://black.readthe= docs.io/en/stable/the_black_code_style/current_style.html#pragmatism)\nfor = exceptions).\n\nOur documentation covers the current _Black_ code style, bu= t planned changes to it are\nalso documented. They\'re both worth taking a = look:\n\n- [The _Black_ Code Style: Current style](https://black.readthedoc= s.io/en/stable/the_black_code_style/current_style.html)\n- [The _Black_ Cod= e Style: Future style](https://black.readthedocs.io/en/stable/the_black_cod= e_style/future_style.html)\n\nChanges to the _Black_ code style are bound b= y the Stability Policy:\n\n- [The _Black_ Code Style: Stability Policy](htt= ps://black.readthedocs.io/en/stable/the_black_code_style/index.html#stabili= ty-policy)\n\nPlease refer to this document before submitting an issue. Wha= t seems like a bug might be\nintended behaviour.\n\n### Pragmatism\n\nEarly= versions of _Black_ used > to be absolutist in some respects. They took after its\ninitial author.= This was fine at the time as it made the implementation simpler and\nthere= were not many users anyway. Not many edge cases were reported. As a mature= tool,\n_Black_ does make some exceptions to rules it otherwise holds.\n\n-= [The _Black_ code style: Pragmatism](https://black.readthedocs.io/en/stabl= e/the_black_code_style/current_style.html#pragmatism)\n\nPlease refer to th= is document before submitting an issue just like with the document\nabove. = What seems like a bug might be intended behaviour.\n\n## Configuration\n\n_= Black_ is able to read project-specific default values for its command line= options\nfrom a `pyproject.toml` file. This is especially useful for speci= fying custom\n`--include` and `--exclude`/`--force-exclude`/`--extend-exclu= de` patterns for your\nproject.\n\nYou can find more details in our documen= tation:\n\n- [The basics: Configuration via a file](https://black.readthedo= cs.io/en/stable/usage_and > _configuration/the_basics.html#configuration! > -via-a-fi! > le)\n\nAnd if you\'re looking for more general configuration documentati= on:\n\n- [Usage and Configuration](https://black.readthedocs.io/en/stable/u= sage_and_configuration/index.html)\n\n**Pro-tip**: If you\'re asking yourse= lf "Do I need to configure anything?" the answer is\n"No". _Black_ is all a= bout sensible defaults. Applying those defaults will have your\ncode in com= pliance with many other _Black_ formatted projects.\n\n## Used by\n\nThe fo= llowing notable open-source projects trust _Black_ with enforcing a consist= ent\ncode style: pytest, tox, Pyramid, Django, Django Channels, Hypothesis,= attrs,\nSQLAlchemy, Poetry, PyPA applications (Warehouse, Bandersnatch, Pi= penv, virtualenv),\npandas, Pillow, Twisted, LocalStack, every Datadog Agen= t Integration, Home Assistant,\nZulip, Kedro, OpenOA, FLORIS, ORBIT, WOMBAT= , and many more.\n\nThe following organizations use _Black_: Facebook, Drop= box, KeepTruckin, Mozilla, Quora,\nDuolingo, QuantumBlack, Tesla.\n\nAre we= missing anyone? Let us k > now.\n\n## Testimonials\n\n**Mike Bayer**, [author of `SQLAlchemy`](http= s://www.sqlalchemy.org/):\n\n> I can\'t think of any single tool in my enti= re programming career that has given me a\n> bigger productivity increase b= y its introduction. I can now do refactorings in about\n> 1% of the keystro= kes that it would have taken me previously when we had no way for\n> code t= o format itself.\n\n**Dusty Phillips**,\n[writer](https://smile.amazon.com/= s/ref=3Dnb_sb_noss?url=3Dsearch-alias%3Daps&field-keywords=3Ddusty+phillips= ):\n\n> _Black_ is opinionated so you don\'t have to be.\n\n**Hynek Schlawa= ck**, [creator of `attrs`](https://www.attrs.org/), core developer of\nTwis= ted and CPython:\n\n> An auto-formatter that doesn\'t suck is all I want fo= r Xmas!\n\n**Carl Meyer**, [Django](https://www.djangoproject.com/) core de= veloper:\n\n> At least the name is good.\n\n**Kenneth Reitz**, creator of [= `requests`](https://requests.readthedocs.io/en/latest/)\nand [`pipenv`](htt= ps://readthedocs.org/projects/p > ipenv/):\n\n> This vastly improves the forma! > tting of ! > our code.. Thanks a ton!\n\n## Show your style\n\nUse the badge in your = project\'s README.md:\n\n```md\n[![Code style: black](https://img.shields.i= o/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n```\= n\nUsing the badge in README.rst:\n\n```\n.. image:: https://img.shields.io= /badge/code%20style-black-000000.svg\n :target: https://github.com/psf/b= lack\n```\n\nLooks like this:\n[![Code style: black](https://img.shields.io= /badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n## = License\n\nMIT\n\n## Contributing\n\nWelcome! Happy to see you willing to m= ake the project better. You can get started by\nreading this:\n\n- [Contrib= uting: The basics](https://black.readthedocs.io/en/latest/contributing/the_= basics.html)\n\nYou can also take a look at the rest of the contributing do= cs or talk with the\ndevelopers:\n\n- [Contributing documentation](https://= black.readthedocs.io/en/latest/contributing/index.html)\n- [Chat on Discord= ](https://discord.gg/RtVd > v86PrH)\n\n## Change log\n\nThe log has become rather long. It moved to = its own file.\n\nSee [CHANGES](https://black.readthedocs.io/en/latest/chang= e_log.html).\n\n## Authors\n\nThe author list is quite long nowadays, so it= lives in its own file.\n\nSee [AUTHORS.md](./AUTHORS.md)\n\n## Code of Con= duct\n\nEveryone participating in the _Black_ project, and in particular in= the issue tracker,\npull requests, and social media activity, is expected = to treat other people with respect\nand more generally to follow the guidel= ines articulated in the\n[Python Community Code of Conduct](https://www.pyt= hon.org/psf/codeofconduct/).\n\nAt the same time, humor is encouraged. In f= act, basic familiarity with Monty Python\'s\nFlying Circus is expected. We = are not savages.\n\nAnd if you _really_ need to slap somebody, do it with a= fish while dancing.\n# Change Log\n\n## Unreleased\n\n### Highlights\n\n\n\n### Stabl= e style\n\n\n\n### ! > Preview st! > yle\n\n\n\n### Config= uration\n\n\n\n### Packaging= \n\n\n\n### Parser\n\n\n\n### Performance\n\n\n\n### Output\n\n\n\n### _Blackd_\n\n\n\n### Integrations= \n\n\n\n##= # Documentation\n\n\n\n## 22.10.0\n\n### = Highlights\n\n- Runtime support for Python 3.6 has been removed. Formatting= 3.6 code will still be\n supported until further notice.\n\n### Stable st= yle\n\n- Fix a crash when `# fmt: on` is used on a different block level th= an `# fmt: off`\n (#3281 > )\n\n### Preview style\n\n- Fix a crash when formatting some dicts with = parenthesis-wrapped long string keys\n (#3262)\n\n### Configuration\n\n- `= =2Eipynb_checkpoints` directories are now excluded by default (#3293)\n- Ad= d `--skip-source-first-line` / `-x` option to ignore the first line of sour= ce code\n while formatting (#3299)\n\n### Packaging\n\n- Executables made = with PyInstaller will no longer crash when formatting several files\n at o= nce on macOS. Native x86-64 executables for macOS are available once again.= \n (#3275)\n- Hatchling is now used as the build backend. This will not ha= ve any effect for users\n who install Black with its wheels from PyPI. (#3= 233)\n- Faster compiled wheels are now available for CPython 3.11 (#3276)\n= \n### _Blackd_\n\n- Windows style (CRLF) newlines will be preserved (#3257)= =2E\n\n### Integrations\n\n- Vim plugin: add flag (`g:black_preview`) to en= able/disable the preview style (#3246)\n- Update GitHub Action to support f= ormatting of Jupyter Notebook > files via a `jupyter`\n option (#3282)\n- ! > Update Gi! > tHub Action to support use of version specifiers (e.g. `<23`) for Black\= n version (#3265)\n\n## 22.8.0\n\n### Highlights\n\n- Python 3.11 is now s= upported, except for _blackd_ as aiohttp does not support 3.11 as\n of pub= lishing (#3234)\n- This is the last release that supports running _Black_ o= n Python 3.6 (formatting 3.6\n code will continue to be supported until fu= rther notice)\n- Reword the stability policy to say that we may, in rare ca= ses, make changes that\n affect code that was not previously formatted by = _Black_ (#3155)\n\n### Stable style\n\n- Fix an infinite loop when using `#= fmt: on/off` in the middle of an expression or code\n block (#3158)\n- Fi= x incorrect handling of `# fmt: skip` on colon (`:`) lines (#3148)\n- Comme= nts are no longer deleted when a line had spaces removed around power opera= tors\n (#2874)\n\n### Preview style\n\n- Single-character closing docstrin= g quotes are no longer moved to their own line as\n this is invalid. This = was a bug introduced in v > ersion 22.6.0. (#3166)\n- `--skip-string-normalization` / `-S` now preve= nts docstring prefixes from being\n normalized as expected (#3168)\n- When= using `--skip-magic-trailing-comma` or `-C`, trailing commas are stripped = =66rom\n subscript expressions with more than 1 element (#3209)\n- Implici= tly concatenated strings inside a list, set, or tuple are now wrapped insid= e\n parentheses (#3162)\n- Fix a string merging/split issue when a comment= is present in the middle of implicitly\n concatenated strings on its own = line (#3227)\n\n### _Blackd_\n\n- `blackd` now supports enabling the previe= w style via the `X-Preview` header (#3217)\n\n### Configuration\n\n- Black = now uses the presence of debug f-strings to detect target version (#3215)\n= - Fix misdetection of project root and verbose logging of sources in cases = involving\n `--stdin-filename` (#3216)\n- Immediate `.gitignore` files in = source directories given on the command line are now\n also respected, pre= viously only `.gitignore` f > iles in the project root and\n automaticall! > y discove! > red directories were respected (#3237)\n\n### Documentation\n\n- Recomme= nd using BlackConnect in IntelliJ IDEs (#3150)\n\n### Integrations\n\n- Vim= plugin: prefix messages with `Black: ` so it\'s clear they come from Black= (#3194)\n- Docker: changed to a /opt/venv installation + added to PATH to = be available to\n non-root users (#3202)\n\n### Output\n\n- Change from de= precated `asyncio.get_event_loop()` to create our event loop which\n remov= es DeprecationWarning (#3164)\n- Remove logging from internal `blib2to3` li= brary since it regularly emits error logs\n about failed caching that can = and should be ignored (#3193)\n\n### Parser\n\n- Type comments are now incl= uded in the AST equivalence check consistently so accidental\n deletion ra= ises an error. Though type comments can\'t be tracked when running on PyPy\= n 3.7 due to standard library limitations. (#2874)\n\n### Performance\n\n-= Reduce Black\'s startup time when formatting a single file by 15-30% (#321= 1)\n\n## 22.6.0\n\n### St > yle\n\n- Fix unstable formatting involving `#fmt: skip` and `# fmt:skip`= comments (notice the\n lack of spaces) (#2970)\n\n### Preview style\n\n- = Docstring quotes are no longer moved if it would violate the line length li= mit (#3044)\n- Parentheses around return annotations are now managed (#2990= )\n- Remove unnecessary parentheses around awaited objects (#2991)\n- Remov= e unnecessary parentheses in `with` statements (#2926)\n- Remove trailing n= ewlines after code block open (#3035)\n\n### Integrations\n\n- Add `scripts= /migrate-black.py` script to ease introduction of Black to a Git project\n = (#3038)\n\n### Output\n\n- Output Python version and implementation as par= t of `--version` flag (#2997)\n\n### Packaging\n\n- Use `tomli` instead of = `tomllib` on Python 3.11 builds where `tomllib` is not\n available (#2987)= \n\n### Parser\n\n- [PEP 654](https://peps.python.org/pep-0654/#except) syn= tax (for example,\n `except *ExceptionGroup:`) is now supported (#3016)\n-= [PEP 646](https://peps.p > ython.org/pep-0646) syntax (for example,\n ! > `Array[Ba! > tch, *Shape]` or `def fn(*args: *T) -> None`) is now supported (#3071)\n= \n### Vim Plugin\n\n- Fix `strtobool` function. It didn\'t parse true/on/fa= lse/off. (#3025)\n\n## 22.3.0\n\n### Preview style\n\n- Code cell separator= s `#%%` are now standardised to `# %%` (#2919)\n- Remove unnecessary parent= heses from `except` statements (#2939)\n- Remove unnecessary parentheses fr= om tuple unpacking in `for` loops (#2945)\n- Avoid magic-trailing-comma in = single-element subscripts (#2942)\n\n### Configuration\n\n- Do not format `= __pypackages__` directories by default (#2836)\n- Add support for specifyin= g stable version with `--required-version` (#2832).\n- Avoid crashing when = the user has no homedir (#2814)\n- Avoid crashing when md5 is not available= (#2905)\n- Fix handling of directory junctions on Windows (#2904)\n\n### D= ocumentation\n\n- Update pylint config documentation (#2931)\n\n### Integra= tions\n\n- Move test to disable plugin in Vim/Neovim, which speeds up loadi= ng (#2896)\n\n### Output\ > n\n- In verbose mode, log when _Black_ is using user-level config (#2861= )\n\n### Packaging\n\n- Fix Black to work with Click 8.1.0 (#2966)\n- On Py= thon 3.11 and newer, use the standard library\'s `tomllib` instead of `toml= i`\n (#2903)\n- `black-primer`, the deprecated internal devtool, has been = removed and copied to a\n [separate repository](https://github.com/cooperl= ees/black-primer) (#2924)\n\n### Parser\n\n- Black can now parse starred ex= pressions in the target of `for` and `async for`\n statements, e.g `for it= em in *items_1, *items_2: pass` (#2879).\n\n## 22.1.0\n\nAt long last, _Bla= ck_ is no longer a beta product! This is the first non-beta release\nand th= e first release covered by our new\n[stability policy](https://black.readth= edocs.io/en/stable/the_black_code_style/index.html#stability-policy).\n\n##= # Highlights\n\n- **Remove Python 2 support** (#2740)\n- Introduce the `--p= review` flag (#2752)\n\n### Style\n\n- Deprecate `--experimental-string-pro= cessing` and move the fun > ctionality under\n `--preview` (#2789)\n- F! > or stubs,! > one blank line between class attributes and methods is now kept if ther= e\'s\n at least one pre-existing blank line (#2736)\n- Black now normalize= s string prefix order (#2297)\n- Remove spaces around power operators if bo= th operands are simple (#2726)\n- Work around bug that causes unstable form= atting in some cases in the presence of the\n magic trailing comma (#2807)= \n- Use parentheses for attribute access on decimal float and int literals = (#2799)\n- Don\'t add whitespace for attribute access on hexadecimal, binar= y, octal, and complex\n literals (#2799)\n- Treat blank lines in stubs the= same inside top-level `if` statements (#2820)\n- Fix unstable formatting w= ith semicolons and arithmetic expressions (#2817)\n- Fix unstable formattin= g around magic trailing comma (#2572)\n\n### Parser\n\n- Fix mapping cases = that contain as-expressions, like `case {"key": 1 | 2 as password}`\n (#26= 86)\n- Fix cases that contain multiple top-level as-expressions, like `case= 1 as a, 2 as b`\n (#271 > 6)\n- Fix call patterns that contain as-expressions with keyword argumen= ts, like\n `case Foo(bar=3Dbaz as quux)` (#2749)\n- Tuple unpacking on `re= turn` and `yield` constructs now implies 3.8+ (#2700)\n- Unparenthesized tu= ples on annotated assignments (e.g\n `values: Tuple[int, ...] =3D 1, 2, 3`= ) now implies 3.8+ (#2708)\n- Fix handling of standalone `match()` or `case= ()` when there is a trailing newline or a\n comment inside of the parenthe= ses. (#2760)\n- `from __future__ import annotations` statement now implies = Python 3.7+ (#2690)\n\n### Performance\n\n- Speed-up the new backtracking p= arser about 4X in general (enabled when\n `--target-version` is set to 3.1= 0 and higher). (#2728)\n- _Black_ is now compiled with [mypyc](https://gith= ub.com/mypyc/mypyc) for an overall 2x\n speed-up. 64-bit Windows, MacOS, a= nd Linux (not including musl) are supported. (#1009,\n #2431)\n\n### Confi= guration\n\n- Do not accept bare carriage return line endings in pyproject.= toml (#2408)\n- Add configura > tion option (`python-cell-magics`) to format! > cells wi! > th custom magics in\n Jupyter Notebooks (#2744)\n- Allow setting custom= cache directory on all platforms with environment variable\n `BLACK_CACHE= _DIR` (#2739).\n- Enable Python 3.10+ by default, without any extra need to= specify\n `--target-version=3Dpy310`. (#2758)\n- Make passing `SRC` or `-= -code` mandatory and mutually exclusive (#2804)\n\n### Output\n\n- Improve = error message for invalid regular expression (#2678)\n- Improve error messa= ge when parsing fails during AST safety check by embedding the\n underlyin= g SyntaxError (#2693)\n- No longer color diff headers white as it\'s unread= able in light themed terminals\n (#2691)\n- Text coloring added in the fin= al statistics (#2712)\n- Verbose mode also now describes how a project root= was discovered and which paths will\n be formatted. (#2526)\n\n### Packag= ing\n\n- All upper version bounds on dependencies have been removed (#2718)= \n- `typing-extensions` is no longer a required dependency in Python 3.10+ = (#2772)\n- Set `click` lowe > r bound to `8.0.0` (#2791)\n\n### Integrations\n\n- Update GitHub action= to support containerized runs (#2748)\n\n### Documentation\n\n- Change pro= tocol in pip installation instructions to `https://` (#2761)\n- Change HTML= theme to Furo primarily for its responsive design and mobile support\n (#= 2793)\n- Deprecate the `black-primer` tool (#2809)\n- Document Python suppo= rt policy (#2819)\n\n## 21.12b0\n\n### _Black_\n\n- Fix determination of f-= string expression spans (#2654)\n- Fix bad formatting of error messages abo= ut EOF in multi-line statements (#2343)\n- Functions and classes in blocks = now have more consistent surrounding spacing (#2472)\n\n#### Jupyter Notebo= ok support\n\n- Cell magics are now only processed if they are known Python= cell magics. Earlier, all\n cell magics were tokenized, leading to possib= le indentation errors e.g. with\n `%%writefile`. (#2630)\n- Fix assignment= to environment variables in Jupyter Notebooks (#2642)\n\n#### Python 3.10 = support\n\n- Point users=20 > to using `--target-version py310` if we dete! > ct 3.10-o! > nly syntax (#2668)\n- Fix `match` statements with open sequence subjects= , like `match a, b:` or\n `match a, *b:` (#2639) (#2659)\n- Fix `match`/`c= ase` statements that contain `match`/`case` soft keywords multiple\n times= , like `match re.match()` (#2661)\n- Fix `case` statements with an inline b= ody (#2665)\n- Fix styling of starred expressions inside `match` subject (#= 2667)\n- Fix parser error location on invalid syntax in a `match` statement= (#2649)\n- Fix Python 3.10 support on platforms without ProcessPoolExecuto= r (#2631)\n- Improve parsing performance on code that uses `match` under `-= -target-version py310`\n up to ~50% (#2670)\n\n### Packaging\n\n- Remove d= ependency on `regex` (#2644) (#2663)\n\n## 21.11b1\n\n### _Black_\n\n- Bump= ed regex version minimum to 2021.4.4 to fix Pattern class usage (#2621)\n\n= ## 21.11b0\n\n### _Black_\n\n- Warn about Python 2 deprecation in more case= s by improving Python 2 only syntax\n detection (#2592)\n- Add experimenta= l PyPy support (#2559)\n- > Add partial support for the match statement. As it\'s experimental, it\= 's only enabled\n when `--target-version py310` is explicitly specified (#= 2586)\n- Add support for parenthesized with (#2586)\n- Declare support for = Python 3.10 for running Black (#2562)\n\n### Integrations\n\n- Fixed vim pl= ugin with Python 3.10 by removing deprecated distutils import (#2610)\n- Th= e vim plugin now parses `skip_magic_trailing_comma` from pyproject.toml (#2= 613)\n\n## 21.10b0\n\n### _Black_\n\n- Document stability policy, that will= apply for non-beta releases (#2529)\n- Add new `--workers` parameter (#251= 4)\n- Fixed feature detection for positional-only arguments in lambdas (#25= 32)\n- Bumped typed-ast version minimum to 1.4.3 for 3.10 compatibility (#2= 519)\n- Fixed a Python 3.10 compatibility issue where the loop argument was= still being passed\n even though it has been removed (#2580)\n- Deprecate= Python 2 formatting support (#2523)\n\n### _Blackd_\n\n- Remove dependency= on aiohttp-cors (#2500)\ > n- Bump required aiohttp version to 3.7.4 (#! > 2509)\n\n! > ### _Black-Primer_\n\n- Add primer support for --projects (#2555)\n- Pri= nt primer summary after individual failures (#2570)\n\n### Integrations\n\n= - Allow to pass `target_version` in the vim plugin (#1319)\n- Install build= tools in docker file and use multi-stage build to keep the image size\n d= own (#2582)\n\n## 21.9b0\n\n### Packaging\n\n- Fix missing modules in self-= contained binaries (#2466)\n- Fix missing toml extra used during installati= on (#2475)\n\n## 21.8b0\n\n### _Black_\n\n- Add support for formatting Jupy= ter Notebook files (#2357)\n- Move from `appdirs` dependency to `platformdi= rs` (#2375)\n- Present a more user-friendly error if .gitignore is invalid = (#2414)\n- The failsafe for accidentally added backslashes in f-string expr= essions has been\n hardened to handle more edge cases during quote normali= zation (#2437)\n- Avoid changing a function return type annotation\'s type = to a tuple by adding a\n trailing comma (#2384)\n- Parsing support has bee= n added for unparenthesiz > ed walruses in set literals, set\n comprehensions, and indices (#2447).= \n- Pin `setuptools-scm` build-time dependency version (#2457)\n- Exclude t= yping-extensions version 3.10.0.1 due to it being broken on Python 3.10\n = (#2460)\n\n### _Blackd_\n\n- Replace sys.exit(-1) with raise ImportError as= it plays more nicely with tools that\n scan installed packages (#2440)\n\= n### Integrations\n\n- The provided pre-commit hooks no longer specify `lan= guage_version` to avoid overriding\n `default_language_version` (#2430)\n\= n## 21.7b0\n\n### _Black_\n\n- Configuration files using TOML features high= er than spec v0.5.0 are now supported\n (#2301)\n- Add primer support and = test for code piped into black via STDIN (#2315)\n- Fix internal error when= `FORCE_OPTIONAL_PARENTHESES` feature is enabled (#2332)\n- Accept empty st= din (#2346)\n- Provide a more useful error when parsing fails during AST sa= fety checks (#2304)\n\n### Docker\n\n- Add new `latest_release` tag automat= ion to follow latest blac > k release on docker\n images (#2374)\n\n###! > Integrat! > ions\n\n- The vim plugin now searches upwards from the directory contain= ing the current buffer\n instead of the current working directory for pypr= oject.toml. (#1871)\n- The vim plugin now reads the correct string normaliz= ation option in pyproject.toml\n (#1869)\n- The vim plugin no longer crash= es Black when there\'s boolean values in pyproject.toml\n (#1869)\n\n## 21= =2E6b0\n\n### _Black_\n\n- Fix failure caused by `fmt: skip` and indentatio= n (#2281)\n- Account for +=3D assignment when deciding whether to split str= ing (#2312)\n- Correct max string length calculation when there are string = operators (#2292)\n- Fixed option usage when using the `--code` flag (#2259= )\n- Do not call `uvloop.install()` when _Black_ is used as a library (#230= 3)\n- Added `--required-version` option to require a specific version to be= running (#2300)\n- Fix incorrect custom breakpoint indices when string gro= up contains fake f-strings\n (#2311)\n- Fix regression where `R` prefixes = would be lowercased for docst > rings (#2285)\n- Fix handling of named escapes (`\\N{...}`) when `--expe= rimental-string-processing` is\n used (#2319)\n\n### Integrations\n\n- The= official Black action now supports choosing what version to use, and suppo= rts the\n major 3 OSes. (#1940)\n\n## 21.5b2\n\n### _Black_\n\n- A space i= s no longer inserted into empty docstrings (#2249)\n- Fix handling of .giti= gnore files containing non-ASCII characters on Windows (#2229)\n- Respect `= =2Egitignore` files in all levels, not only `root/.gitignore` file (apply\n= `.gitignore` rules like `git` does) (#2225)\n- Restored compatibility wit= h Click 8.0 on Python 3.6 when LANG=3DC used (#2227)\n- Add extra uvloop in= stall + import support if in python env (#2258)\n- Fix --experimental-strin= g-processing crash when matching parens are not found (#2283)\n- Make sure = to split lines that start with a string operator (#2286)\n- Fix regular exp= ression that black uses to identify f-expressions (#2287)\n\n### _Blackd_\n= \n- Add a lower bound for the > `aiohttp-cors` dependency. Only 0.4.0 or hi! > gher is\n! > supported. (#2231)\n\n### Packaging\n\n- Release self-contained x86_64= MacOS binaries as part of the GitHub release pipeline\n (#2198)\n- Always= build binaries with the latest available Python (#2260)\n\n### Documentati= on\n\n- Add discussion of magic comments to FAQ page (#2272)\n- `--experime= ntal-string-processing` will be enabled by default in the future (#2273)\n-= Fix typos discovered by codespell (#2228)\n- Fix Vim plugin installation i= nstructions. (#2235)\n- Add new Frequently Asked Questions page (#2247)\n- = Fix encoding + symlink issues preventing proper build on Windows (#2262)\n\= n## 21.5b1\n\n### _Black_\n\n- Refactor `src/black/__init__.py` into many f= iles (#2206)\n\n### Documentation\n\n- Replaced all remaining references to= the\n [`master`](https://github.com/psf/black/tree/main) branch with the\= n [`main`](https://github.com/psf/black/tree/main) branch. Some additional= changes in\n the source code were also made. (#2210)\n- Sigificantly reor= ganized the documentation > to make much more sense. Check them out by\n heading over to [the stab= le docs on RTD](https://black.readthedocs.io/en/stable/).\n (#2174)\n\n## = 21.5b0\n\n### _Black_\n\n- Set `--pyi` mode if `--stdin-filename` ends in `= =2Epyi` (#2169)\n- Stop detecting target version as Python 3.9+ with pre-PE= P-614 decorators that are\n being called but with no arguments (#2182)\n\n= ### _Black-Primer_\n\n- Add `--no-diff` to black-primer to suppress formatt= ing changes (#2187)\n\n## 21.4b2\n\n### _Black_\n\n- Fix crash if the user = configuration directory is inaccessible. (#2158)\n\n- Clarify\n [circumsta= nces](https://github.com/psf/black/blob/master/docs/the_black_code_style.md= #pragmatism)\n in which _Black_ may change the AST (#2159)\n\n- Allow `.gi= tignore` rules to be overridden by specifying `exclude` in `pyproject.toml`= \n or on the command line. (#2170)\n\n### _Packaging_\n\n- Install `primer= =2Ejson` (used by `black-primer` by default) with black. (#2154)\n\n## 21.4= b1\n\n### _Black_\n\n- Fix cr > ash on docstrings ending with "\\\\ ". (#214! > 2)\n\n- F! > ix crash when atypical whitespace is cleaned out of dostrings (#2120)\n\= n- Reflect the `--skip-magic-trailing-comma` and `--experimental-string-pro= cessing` flags\n in the name of the cache file. Without this fix, changes = in these flags would not take\n effect if the cache had already been popul= ated. (#2131)\n\n- Don\'t remove necessary parentheses from assignment expr= ession containing assert /\n return statements. (#2143)\n\n### _Packaging_= \n\n- Bump pathspec to >=3D 0.8.1 to solve invalid .gitignore exclusion han= dling\n\n## 21.4b0\n\n### _Black_\n\n- Fixed a rare but annoying formatting= instability created by the combination of\n optional trailing commas inse= rted by `Black` and optional parentheses looking at\n pre-existing "magic"= trailing commas. This fixes issue #1629 and all of its many many\n duplic= ates. (#2126)\n\n- `Black` now processes one-line docstrings by stripping l= eading and trailing spaces,\n and adding a padding space when needed to br= eak up """". (#1740)\n\n- ` > Black` now cleans up leading non-breaking spaces in comments (#2092)\n\n= - `Black` now respects `--skip-string-normalization` when normalizing multi= line\n docstring quotes (#1637)\n\n- `Black` no longer removes all empty l= ines between non-function code and decorators\n when formatting typing stu= bs. Now `Black` enforces a single empty line. (#1646)\n\n- `Black` no longe= r adds an incorrect space after a parenthesized assignment expression\n in= if/while statements (#1655)\n\n- Added `--skip-magic-trailing-comma` / `-C= ` to avoid using trailing commas as a reason\n to split lines (#1824)\n\n-= fixed a crash when PWD=3D/ on POSIX (#1631)\n\n- fixed "I/O operation on c= losed file" when using --diff (#1664)\n\n- Prevent coloured diff output bei= ng interleaved with multiple files (#1673)\n\n- Added support for PEP 614 r= elaxed decorator syntax on python 3.9 (#1711)\n\n- Added parsing support fo= r unparenthesized tuples and yield expressions in annotated\n assignments = (#1835)\n\n- added `--exten > d-exclude` argument (PR #2005)\n\n- speed up! > caching ! > by avoiding pathlib (#1950)\n\n- `--diff` correctly indicates when a fil= e doesn\'t end in a newline (#1662)\n\n- Added `--stdin-filename` argument = to allow stdin to respect `--force-exclude` rules\n (#1780)\n\n- Lines end= ing with `fmt: skip` will now be not formatted (#1800)\n\n- PR #2053: Black= no longer relies on typed-ast for Python 3.8 and higher\n\n- PR #2053: Pyt= hon 2 support is now optional, install with\n `python3 -m pip install blac= k[python2]` to maintain support.\n\n- Exclude `venv` directory by default (= #1683)\n\n- Fixed "Black produced code that is not equivalent to the source= " when formatting\n Python 2 docstrings (#2037)\n\n### _Packaging_\n\n- Se= lf-contained native _Black_ binaries are now provided for releases via GitH= ub\n Releases (#1743)\n\n## 20.8b1\n\n### _Packaging_\n\n- explicitly depe= nd on Click 7.1.2 or newer as `Black` no longer works with versions\n olde= r than 7.0\n\n## 20.8b0\n\n### _Black_\n\n- re-implemented support for expl= icit trailing commas: now > it works consistently within\n any bracket pair, including nested stru= ctures (#1288 and duplicates)\n\n- `Black` now reindents docstrings when re= indenting code around it (#1053)\n\n- `Black` now shows colored diffs (#126= 6)\n\n- `Black` is now packaged using \'py3\' tagged wheels (#1388)\n\n- `B= lack` now supports Python 3.8 code, e.g. star expressions in return stateme= nts\n (#1121)\n\n- `Black` no longer normalizes capital R-string prefixes = as those have a\n community-accepted meaning (#1244)\n\n- `Black` now uses= exit code 2 when specified configuration file doesn\'t exit (#1361)\n\n- `= Black` now works on AWS Lambda (#1141)\n\n- added `--force-exclude` argumen= t (#1032)\n\n- removed deprecated `--py36` option (#1236)\n\n- fixed `--dif= f` output when EOF is encountered (#526)\n\n- fixed `# fmt: off` handling a= round decorators (#560)\n\n- fixed unstable formatting with some `# type: i= gnore` comments (#1113)\n\n- fixed invalid removal on organizing brackets f= ollowed by indexing (#157 > 5)\n\n- introduced `black-primer`, a CI tool! > that all! > ows us to run regression tests against\n existing open source users of = Black (#1402)\n\n- introduced property-based fuzzing to our test suite base= d on Hypothesis and\n Hypothersmith (#1566)\n\n- implemented experimental = and disabled by default long string rewrapping (#1132),\n hidden under a `= --experimental-string-processing` flag while it\'s being worked on;\n this= is an undocumented and unsupported feature, you lose Internet points for\n= depending on it (#1609)\n\n### Vim plugin\n\n- prefer virtualenv packages= over global packages (#1383)\n\n## 19.10b0\n\n- added support for PEP 572 = assignment expressions (#711)\n\n- added support for PEP 570 positional-onl= y arguments (#943)\n\n- added support for async generators (#593)\n\n- adde= d support for pre-splitting collections by putting an explicit trailing com= ma\n inside (#826)\n\n- added `black -c` as a way to format code passed fr= om the command line (#761)\n\n- --safe now works with Python 2 code (#840)\= n\n- fixed grammar select > ion for Python 2-specific code (#765)\n\n- fixed feature detection for t= railing commas in function definitions and call sites\n (#763)\n\n- `# fmt= : off`/`# fmt: on` comment pairs placed multiple times within the same bloc= k of\n code now behave correctly (#1005)\n\n- _Black_ no longer crashes on= Windows machines with more than 61 cores (#838)\n\n- _Black_ no longer cra= shes on standalone comments prepended with a backslash (#767)\n\n- _Black_ = no longer crashes on `from` ... `import` blocks with comments (#829)\n\n- _= Black_ no longer crashes on Python 3.7 on some platform configurations (#49= 4)\n\n- _Black_ no longer fails on comments in from-imports (#671)\n\n- _Bl= ack_ no longer fails when the file starts with a backslash (#922)\n\n- _Bla= ck_ no longer merges regular comments with type comments (#1027)\n\n- _Blac= k_ no longer splits long lines that contain type comments (#997)\n\n- remov= ed unnecessary parentheses around `yield` expressions (#834)\n\n- added par= entheses around long tupl > es in unpacking assignments (#832)\n\n- adde! > d parenth! > eses around complex powers when they are prefixed by a unary operator\n = (#646)\n\n- fixed bug that led _Black_ format some code with a line length= target of 1 (#762)\n\n- _Black_ no longer introduces quotes in f-string su= bexpressions on string boundaries\n (#863)\n\n- if _Black_ puts parenthesi= s around a single expression, it moves comments to the\n wrapped expressio= n instead of after the brackets (#872)\n\n- `blackd` now returns the versio= n of _Black_ in the response headers (#1013)\n\n- `blackd` can now output t= he diff of formats on source code when the `X-Diff` header is\n provided (= #969)\n\n## 19.3b0\n\n- new option `--target-version` to control which Pyth= on versions _Black_-formatted code\n should target (#618)\n\n- deprecated = `--py36` (use `--target-version=3Dpy36` instead) (#724)\n\n- _Black_ no lon= ger normalizes numeric literals to include `_` separators (#696)\n\n- long = `del` statements are now split into multiple lines (#698)\n\n- type comment= s are no longer mangled in=20 > function signatures\n\n- improved performance of formatting deeply neste= d data structures (#509)\n\n- _Black_ now properly formats multiple files i= n parallel on Windows (#632)\n\n- _Black_ now creates cache files atomicall= y which allows it to be used in parallel\n pipelines (like `xargs -P8`) (#= 673)\n\n- _Black_ now correctly indents comments in files that were previou= sly formatted with\n tabs (#262)\n\n- `blackd` now supports CORS (#622)\n\= n## 18.9b0\n\n- numeric literals are now formatted by _Black_ (#452, #461, = #464, #469):\n\n - numeric literals are normalized to include `_` separato= rs on Python 3.6+ code\n\n - added `--skip-numeric-underscore-normalizatio= n` to disable the above behavior and\n leave numeric underscores as they= were in the input\n\n - code with `_` in numeric literals is recognized a= s Python 3.6+\n\n - most letters in numeric literals are lowercased (e.g.,= in `1e10`, `0x01`)\n\n - hexadecimal digits are always uppercased (e.g. `= 0xBADC0DE`)\n\n- added `b > lackd`, see\n [its documentation](https://g! > ithub.com! > /psf/black/blob/18.9b0/README.md#blackd) for\n more info (#349)\n\n- ad= jacent string literals are now correctly split into multiple lines (#463)\n= \n- trailing comma is now added to single imports that don\'t fit on a line= (#250)\n\n- cache is now populated when `--check` is successful for a file= which speeds up\n consecutive checks of properly formatted unmodified fil= es (#448)\n\n- whitespace at the beginning of the file is now removed (#399= )\n\n- fixed mangling [pweave](http://mpastell.com/pweave/) and\n [Spyder = IDE](https://www.spyder-ide.org/) special comments (#532)\n\n- fixed unstab= le formatting when unpacking big tuples (#267)\n\n- fixed parsing of `__fut= ure__` imports with renames (#389)\n\n- fixed scope of `# fmt: off` when di= rectly preceding `yield` and other nodes (#385)\n\n- fixed formatting of la= mbda expressions with default arguments (#468)\n\n- fixed `async for` state= ments: _Black_ no longer breaks them into separate lines (#372)\n\n- note: = the Vim plugin stopped re > gistering `,=3D` as a default chord as it turned out to\n be a bad idea= (#415)\n\n## 18.6b4\n\n- hotfix: don\'t freeze when multiple comments dire= ctly precede `# fmt: off` (#371)\n\n## 18.6b3\n\n- typing stub files (`.pyi= `) now have blank lines added after constants (#340)\n\n- `# fmt: off` and = `# fmt: on` are now much more dependable:\n\n - they now work also within = bracket pairs (#329)\n\n - they now correctly work across function/class b= oundaries (#335)\n\n - they now work when an indentation block starts with= empty lines or misaligned\n comments (#334)\n\n- made Click not fail on= invalid environments; note that Click is right but the\n likelihood we\'l= l need to access non-ASCII file paths when dealing with Python source\n co= de is low (#277)\n\n- fixed improper formatting of f-strings with quotes in= side interpolated expressions\n (#322)\n\n- fixed unnecessary slowdown whe= n long list literals where found in a file\n\n- fixed unnecessary slowdown = on AST nodes with very many > siblings\n\n- fixed cannibalizing backslash! > es during! > string normalization\n\n- fixed a crash due to symbolic links pointing = outside of the project directory (#338)\n\n## 18.6b2\n\n- added `--config` = (#65)\n\n- added `-h` equivalent to `--help` (#316)\n\n- fixed improper unm= odified file caching when `-S` was used\n\n- fixed extra space in string un= packing (#305)\n\n- fixed formatting of empty triple quoted strings (#313)\= n\n- fixed unnecessary slowdown in comment placement calculation on lines w= ithout comments\n\n## 18.6b1\n\n- hotfix: don\'t output human-facing inform= ation on stdout (#299)\n\n- hotfix: don\'t output cake emoji on non-zero re= turn code (#300)\n\n## 18.6b0\n\n- added `--include` and `--exclude` (#270)= \n\n- added `--skip-string-normalization` (#118)\n\n- added `--verbose` (#2= 83)\n\n- the header output in `--diff` now actually conforms to the unified= diff spec\n\n- fixed long trivial assignments being wrapped in unnecessary= parentheses (#273)\n\n- fixed unnecessary parentheses when a line containe= d multiline strings (#232 > )\n\n- fixed stdin handling not working correctly if an old version of C= lick was used (#276)\n\n- _Black_ now preserves line endings when formattin= g a file in place (#258)\n\n## 18.5b1\n\n- added `--pyi` (#249)\n\n- added = `--py36` (#249)\n\n- Python grammar pickle caches are stored with the forma= tting caches, making _Black_\n work in environments where site-packages is= not user-writable (#192)\n\n- _Black_ now enforces a PEP 257 empty line af= ter a class-level docstring (and/or\n fields) and the first method\n\n- fi= xed invalid code produced when standalone comments were present in a traile= r that\n was omitted from line splitting on a large expression (#237)\n\n-= fixed optional parentheses being removed within `# fmt: off` sections (#22= 4)\n\n- fixed invalid code produced when stars in very long imports were in= correctly wrapped\n in optional parentheses (#234)\n\n- fixed unstable for= matting when inline comments were moved around in a trailer that was\n omi= tted from line splitting=20 > on a large expression (#238)\n\n- fixed extr! > a empty l! > ine between a class declaration and the first method if no class\n docs= tring or fields are present (#219)\n\n- fixed extra empty line between a fu= nction signature and an inner function or inner\n class (#196)\n\n## 18.5b= 0\n\n- call chains are now formatted according to the\n [fluent interfaces= ](https://en.wikipedia.org/wiki/Fluent_interface) style (#67)\n\n- data str= ucture literals (tuples, lists, dictionaries, and sets) are now also always= \n exploded like imports when they don\'t fit in a single line (#152)\n\n-= slices are now formatted according to PEP 8 (#178)\n\n- parentheses are no= w also managed automatically on the right-hand side of assignments\n and r= eturn statements (#140)\n\n- math operators now use their respective priori= ties for delimiting multiline\n expressions (#148)\n\n- optional parenthes= es are now omitted on expressions that start or end with a bracket\n and o= nly contain a single operator (#177)\n\n- empty parentheses in a class defi= nition are now removed (# > 145, #180)\n\n- string prefixes are now standardized to lowercase and `u= ` is removed on Python 3.6+\n only code and Python 2.7+ code with the `uni= code_literals` future import (#188, #198,\n #199)\n\n- typing stub files (= `.pyi`) are now formatted in a style that is consistent with PEP\n 484 (#2= 07, #210)\n\n- progress when reformatting many files is now reported increm= entally\n\n- fixed trailers (content with brackets) being unnecessarily exp= loded into their own\n lines after a dedented closing bracket (#119)\n\n- = fixed an invalid trailing comma sometimes left in imports (#185)\n\n- fixed= non-deterministic formatting when multiple pairs of removable parentheses = were\n used (#183)\n\n- fixed multiline strings being unnecessarily wrappe= d in optional parentheses in long\n assignments (#215)\n\n- fixed not spli= tting long from-imports with only a single name\n\n- fixed Python 3.6+ file= discovery by also looking at function calls with unpacking.\n This fixed = non-deterministic formatt > ing if trailing commas where used both in fu! > nction\n ! > signatures with stars and function calls with stars but the former woul= d be\n reformatted to a single line.\n\n- fixed crash on dealing with opti= onal parentheses (#193)\n\n- fixed "is", "is not", "in", and "not in" not c= onsidered operators for splitting\n purposes\n\n- fixed crash when dead sy= mlinks where encountered\n\n## 18.4a4\n\n- don\'t populate the cache on `--= check` (#175)\n\n## 18.4a3\n\n- added a "cache"; files already reformatted = that haven\'t changed on disk won\'t be\n reformatted again (#109)\n\n- `-= -check` and `--diff` are no longer mutually exclusive (#149)\n\n- generaliz= ed star expression handling, including double stars; this fixes\n multipli= cation making expressions "unsafe" for trailing commas (#132)\n\n- _Black_ = no longer enforces putting empty lines behind control flow statements (#90)= \n\n- _Black_ now splits imports like "Mode 3 + trailing comma" of isort (#= 127)\n\n- fixed comment indentation when a standalone comment closes a bloc= k (#16, #32)\n\n- fixed s > tandalone comments receiving extra empty lines if immediately preceding = a\n class, def, or decorator (#56, #154)\n\n- fixed `--diff` not showing e= ntire path (#130)\n\n- fixed parsing of complex expressions after star and = double stars in function calls\n (#2)\n\n- fixed invalid splitting on comm= a in lambda arguments (#133)\n\n- fixed missing splits of ternary expressio= ns (#141)\n\n## 18.4a2\n\n- fixed parsing of unaligned standalone comments = (#99, #112)\n\n- fixed placement of dictionary unpacking inside dictionary = literals (#111)\n\n- Vim plugin now works on Windows, too\n\n- fixed unstab= le formatting when encountering unnecessarily escaped quotes in a string\n = (#120)\n\n## 18.4a1\n\n- added `--quiet` (#78)\n\n- added automatic parent= heses management (#4)\n\n- added [pre-commit](https://pre-commit.com) integ= ration (#103, #104)\n\n- fixed reporting on `--check` with multiple files (= #101, #102)\n\n- fixed removing backslash escapes from raw strings (#100, #= 105)\n\n## 18.4a0\n\n- ad > ded `--diff` (#87)\n\n- add line breaks befo! > re all de! > limiters, except in cases like commas, to better comply\n with PEP 8 (#= 73)\n\n- standardize string literals to use double quotes (almost) everywhe= re (#75)\n\n- fixed handling of standalone comments within nested bracketed= expressions; _Black_\n will no longer produce super long lines or put all= standalone comments at the end of\n the expression (#22)\n\n- fixed 18.3a= 4 regression: don\'t crash and burn on empty lines with trailing whitespace= \n (#80)\n\n- fixed 18.3a4 regression: `# yapf: disable` usage as trailing= comment would cause\n _Black_ to not emit the rest of the file (#95)\n\n-= when CTRL+C is pressed while formatting many files, _Black_ no longer frea= ks out with\n a flurry of asyncio-related exceptions\n\n- only allow up to= two empty lines on module level and only single empty lines within\n func= tions (#74)\n\n## 18.3a4\n\n- `# fmt: off` and `# fmt: on` are implemented = (#5)\n\n- automatic detection of deprecated Python 2 forms of print stateme= nts and exec\n statement > s in the formatted file (#49)\n\n- use proper spaces for complex express= ions in default values of typed function\n arguments (#60)\n\n- only retur= n exit code 1 when --check is used (#50)\n\n- don\'t remove single trailing= commas from square bracket indexing (#59)\n\n- don\'t omit whitespace if t= he previous factor leaf wasn\'t a math operator (#55)\n\n- omit extra space= in kwarg unpacking if it\'s the first argument (#46)\n\n- omit extra space= in\n [Sphinx auto-attribute comments](http://www.sphinx-doc.org/en/stable= /ext/autodoc.html#directive-autoattribute)\n (#68)\n\n## 18.3a3\n\n- don\'= t remove single empty lines outside of bracketed expressions (#19)\n\n- add= ed ability to pipe formatting from stdin to stdin (#25)\n\n- restored abili= ty to format code with legacy usage of `async` as a name (#20, #42)\n\n- ev= en better handling of numpy-style array indexing (#33, again)\n\n## 18.3a2\= n\n- changed positioning of binary operators to occur at beginning of lines= instead of at\n the end > , following\n [a recent change to PEP 8](ht! > tps://git! > hub.com/python/peps/commit/c59c4376ad233a62ca4b3a6060c81368bd21e85b)\n = (#21)\n\n- ignore empty bracket pairs while splitting. This avoids very wei= rdly looking\n formattings (#34, #35)\n\n- remove a trailing comma if ther= e is a single argument to a call\n\n- if top level functions were separated= by a comment, don\'t put four empty lines after\n the upper function\n\n-= fixed unstable formatting of newlines with imports\n\n- fixed unintentiona= l folding of post scriptum standalone comments into last statement\n if it= was a simple statement (#18, #28)\n\n- fixed missing space in numpy-style = array indexing (#33)\n\n- fixed spurious space after star-based unary expre= ssions (#31)\n\n## 18.3a1\n\n- added `--check`\n\n- only put trailing comma= s in function signatures and calls if it\'s safe to do so. If\n the file i= s Python 3.6+ it\'s always safe, otherwise only safe if there are no `*args= `\n or `**kwargs` used in the signature or call. (#8)\n\n- fixed invalid s= pacing of dots in relativ > e imports (#6, #13)\n\n- fixed invalid splitting after comma on unpacked= variables in for-loops (#23)\n\n- fixed spurious space in parenthesized se= t expressions (#7)\n\n- fixed spurious space after opening parentheses and = in default arguments (#14, #17)\n\n- fixed spurious space after unary opera= tors when the operand was a complex expression\n (#15)\n\n## 18.3a0\n\n- f= irst published version, Happy =F0=9F=8D=B0 Day 2018!\n\n- alpha quality\n\n= - date-versioned (see: )\n', > + author_email=3D'=C5=81ukasz Langa ', > + classifiers=3D[ > + 'Development Status :: 5 - Production/Stable', > + 'Environment :: Console', > + 'Intended Audience :: Developers', > + 'License :: OSI Approved :: MIT License', > + 'Operating System :: OS Independent', > + 'Programming Language :: Python', > + 'Programming Language :: Python :: 3 :: Only', > + 'Programming Language :: Python :: 3.7', > + 'Programming Language :: Python :: 3.8', > + 'Programming Language :: Python :: 3.9', > + 'Programming Language :: Python :: 3.10', > + 'Programming Language :: Python :: 3.11', > + 'Topic :: Software Development :: Libraries :: Python Modules', > + 'Topic :: Software Development :: Quality Assurance', > + ], > + install_requires=3D[ > + 'click>=3D8.0.0', > + 'mypy-extensions>=3D0.4.3', > + 'pathspec>=3D0.9.0', > + 'platformdirs>=3D2', > + 'tomli>=3D1.1.0; python_full_version < "3.11.0a7"', > + 'typed-ast>=3D1.4.2; python_version < "3.8" and implementation_n= ame =3D=3D "cpython"', > + 'typing-extensions>=3D3.10.0.0; python_version < "3.10"', > + ], > + extras_require=3D{ > + 'colorama': [ > + 'colorama>=3D0.4.3', > + ], > + 'd': [ > + 'aiohttp>=3D3.7.4', > + ], > + 'jupyter': [ > + 'ipython>=3D7.8.0', > + 'tokenize-rt>=3D3.2.0', > + ], > + 'uvloop': [ > + 'uvloop>=3D0.15.2', > + ], > + }, > + entry_points=3D{ > + 'console_scripts': [ > + 'black =3D black:patched_main', > + 'blackd =3D blackd:patched_main [d]', > + ], > + }, > + packages=3D[ > + 'scripts', > + 'src.black', > + 'src.blackd', > + 'src.blib2to3', > + 'src.blib2to3.pgen2', > + 'tests', > + ], > +) >=20 --=20 Dmitry Marakasov . amdmi3@amdmi3.ru ..: https://github.com/AMDmi3 https://amdmi3.ru/